6

Microsoft を使用してプログラムで Azure KeyVault シークレットを作成しようとしています。Azure.KeyVault.KeyVaultClient. 私の目的のために、Azure AD アプリケーションとして証明書で認証する認証トークンを取得しています。Azure AD アプリケーションのマニフェストには、既に証明書情報が含まれています。

私のコードは、Azure AD アプリケーションのオブジェクト ID に対するシークレットとキーの両方に "すべて" のアクセス許可を与える Azure KeyVault を作成します。Powershell を使用して KeyVault を取得し、アクセス ポリシーを調べて、これが発生したことを確認しました。

KeyVaultClient.SetSecretAsync() を使用してこの KeyVault でシークレットを作成しようとすると、「Operation 'set' is not allowed.」という例外が発生します。ステータス コードは「禁止」です。

KeyVault に設定されたアクセス許可以外に、他のもの (Azure AD アプリケーションなど) に対する他のアクセス許可を確認する必要はありますか?

4

2 に答える 2

11

問題は、アクセス ポリシーが Azure AD アプリケーションのオブジェクト ID を必要としないことです。実際には、Azure AD アプリケーションのサービス プリンシパルのオブジェクト ID が必要です。

最近、portal.azure.com に "アプリの登録" が追加されたため、アプリケーションのオブジェクト ID を簡単に取得できます。ただし、Azure AD アプリケーションのサービス プリンシパルのオブジェクト ID は、UI からは利用できません (私が知る限り)。Powershell 経由で取得できます。

Get-AzureRmADServicePrincipal -ServicePrincipalName <app client ID>
于 2016-10-12T15:29:30.400 に答える
3

Key Vault 設定の [アクセス ポリシー] ブレードで、Key Vaultにアクセスできるすべての登録済みアプリを見つけることができるようになりました。

助けが必要な人のために、ここでAzure portal を使用したサービス プリンシパルの作成と使用を文書化しました。

于 2018-03-29T02:08:48.247 に答える