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 포털 사용
- 키 볼트 열기
- 키 볼트 리소스 블레이드에서 액세스 정책 선택
- 블레이드 맨 위에 있는 [+Add Access Policy](+ 액세스 정책 추가) 버튼을 클릭합니다.
- 이전에 만든 응용프로그램을 선택하려면 주체 선택을 클릭합니다.
- 키 권한 드롭다운에서 "암호 해독", "서명", "취득", "키 랩 해제" 권한을 선택합니다.
- 변경사항 저장
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
'programing' 카테고리의 다른 글
업스트림에 변경 사항이 있는 경우 git 상태에서 branch가 최신 상태로 표시되는 이유는 무엇입니까? (0) | 2023.05.14 |
---|---|
방법? 매개 변수 및 LIKE 문 SQL (0) | 2023.05.14 |
코드를 사용하여 WPF에서 바인딩 제거 (0) | 2023.05.14 |
병합 충돌을 해결한 후 병합을 완료하려면 어떻게 해야 합니까? (0) | 2023.05.14 |
__file__이(가) 주피터 노트북에 없습니다. (0) | 2023.05.14 |