AADアプリケーションを使用して.NETクライアントでKeyVaultにアクセスしています。シークレットのすべての権限がこのAADアプリで有効になっていますが(下のスクリーンショット)、[シークレット]パネルに移動すると、「このキーコンテナーのアクセスポリシーで「リスト」操作が有効になっていません」というメッセージが表示されます。
AADアプリケーションを介して権限を設定できるようにしたいので、Powershellを使用することはできません。
私はPowershellを介して権限を設定した場合-それは動作します。
アクセスポリシーを作成する方法:
var accessPolicy = new AccessPolicyEntry
{
ApplicationId = app,
ObjectId = Obid,
PermissionsRawJsonString = "{ \"keys\": [ \"all\" ], \"secrets\": [ \"all\" ], \"certificates\": [ \"all\" ] }",
TenantId = ten,
};
return accessPolicy;
次にリストエラーが表示されるので、私は使用する必要があります
Set-AzureRmKeyVaultAccessPolicy -VaultName vaultname -ResourceGroupName location -ObjectId obid -PermissionsToKeys all -PermissionsToSecrets all
これでエラーは解消されますが、.NET SDKを使用して解決できるように、解決策をお勧めします。
何年にもわたってこの問題を分類しようとした後、問題はアクセスポリシーコードにありました。ユーザーがコードに登録されると、ユーザーはアプリIDに関連付けられます。アプリIDは、ユーザーがアプリケーションでありユーザーであると考えているため問題です。
これを示す兆候は、ポータルにアクセスした場合、Keyvaultの「アクセスポリシー」にあり、その下に「アプリケーション+ユーザー」と表示されます。ユーザー(既にリストに含まれている)を追加しようとすると、2番目のユーザーが追加されるので、同じユーザーが2人います。
したがって、必要なことは次のとおりです。
var accessPolicy = new AccessPolicyEntry
{
ApplicationId = app, // Delete this line
ObjectId = Obid,
PermissionsRawJsonString = "{ \"keys\": [ \"all\" ], \"secrets\": [ \"all\" ], \"certificates\": [ \"all\" ] }",
TenantId = ten,
};
return accessPolicy;
Microsoftのドキュメントは、あいまいな場合がありますが、これはその1つだと思います。
同じ問題がありましたが、解決策は、ボールトのAccess Policies
ブレードにアクセスして、アプリケーションをクリックし、Key permissions
/Secret permissions
でList
をアクティブにすることでした。