programing

Azure 키 볼트: 액세스 거부됨

stoneblock 2023. 5. 14. 10:04

Azure 키 볼트: 액세스 거부됨

Azure 키 볼트에서 암호를 얻는 데 필요한 코드는 다음과 같습니다.

public static async Task<string> GetToken(string authority, string resource, string scope)
    {
        var authContext = new AuthenticationContext(authority);
        ClientCredential clientCred = new ClientCredential(...); //app id, app secret
        AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);

        if (result == null)
            throw new InvalidOperationException("Failed to obtain the JWT token");

        return result.AccessToken;
    }

    public static string GetSecret(string secretName)
    {
        KeyVaultClient keyVaultClient = new KeyVaultClient(GetToken);
        try
        {
            return keyVaultClient.GetSecretAsync("my-key-vault-url", secretName).Result.Value;
        }
        catch(Exception ex)
        {
            return "Error";
        }
    }

오류가 "access denied"(액세스 거부)로 표시됩니다. 이는 ID, 비밀 및 볼트의 URL이 정상임을 의미합니다.하지만 이 오류를 수정하기 위해 무엇을 다르게 할 수 있는지 모르겠습니다. Azure 포털에 비밀을 읽지 못하게 하는 설정이 있나요?

액세스 거부를 수정하려면 Active Directory 권한을 구성해야 합니다.KeyVault에 대한 액세스 권한을 부여합니다.

PowerShell 다음 실행 명령 사용:

Set-AzureRmKeyVaultAccessPolicy -VaultName 'XXXXXXX' -ServicePrincipalName XXXXX -PermissionsToKeys decrypt,sign,get,unwrapKey

Azure 포털 사용

  1. 키 볼트 열기
  2. 키 볼트 리소스 블레이드에서 액세스 정책 선택
  3. 블레이드 맨 위에 있는 [+Add Access Policy](+ 액세스 정책 추가) 버튼을 클릭합니다.
  4. 이전에 만든 응용프로그램을 선택하려면 주체 선택을 클릭합니다.
  5. 키 권한 드롭다운에서 "암호 해독", "서명", "취득", "키 랩 해제" 권한을 선택합니다.
  6. 변경사항 저장

응용 프로그램에 키 또는 암호 사용 권한 부여

Azure Portal을 사용하여 질문이 지정되었습니다. 여기서 Key Vault 액세스를 위한 서비스 주체를 생성하는 방법에 대해 설명했습니다.

특히 2단계부터:

Azure 포털에서 키 볼트를 열고 설정에서 액세스 정책 블레이드를 선택합니다.새로 추가를 클릭하고 주체 선택을 클릭합니다. 이전 단계에서 만든 등록된 앱의 전체 이름을 검색 상자에 입력해야 앱을 선택할 수 있습니다.

상단 드롭다운에서 적절한 템플릿을 선택하거나 키, 비밀 또는 인증서 권한을 수동으로 선택할 수 있습니다.이 단계에서는 인증된 응용프로그램에 대해 걱정할 필요가 없습니다.

중요: 확인 버튼을 누르면 새 정책이 목록에 추가되지만 저장되지는 않습니다!계속하기 전에 저장을 클릭해야 합니다.

무슨 일이 일어나고 있는지 - 서비스 주체에게 해당 작업을 수행할 수 있는 권한이 없습니다.이 실 좀 보세요.

프로그래밍 방식으로 Azure KeyVault 암호를 만들 때 "작업 'set not allowed" 오류를 해결하려면 어떻게 해야 합니까?

의 키 볼트에 액세스합니다.Net code Azure 설정:- App Service - 1-Enable-MSI(Managed Service Identity)-ON

키 볼트: 1-열린 키 볼트 2-키 볼트 리소스 블레이드에서 액세스 정책 선택

3- 블레이드 상단의 [+신규 추가] 버튼 클릭 4- 주체 선택을 클릭하여 이전에 만든 애플리케이션(앱 서비스)을 선택합니다.

.Net Code:- 의 주요 볼트 암호에 액세스하기 위한 코드입니다.넷 코드

 var azureServiceTokenProvider = new AzureServiceTokenProvider();
        var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
        var secret = keyVaultClient.GetSecretAsync("https://test.vault.azure.net/", "clientid").Result.Value;

동일한 응용 프로그램이 볼트의 암호를 읽을 수 있도록 권한을 부여하려면 다음을 실행합니다.

Set-AzureRmKeyVaultAccessPolicy -VaultName 'yourKeyVaultName' -ServicePrincipalName ClientId -PermissionsToSecrets Get

Azure ClientId에 애플리케이션을 등록하면 생성됩니다.

저도 같은 문제가 있었고 KeyVault 방화벽 아래에 제 IP 주소를 추가했습니다.

언급URL : https://stackoverflow.com/questions/40025598/azure-key-vault-access-denied