web-dev-qa-db-ja.com

Azure Keyvault-「ボールトポリシーでは操作「リスト」は許可されていません」が、すべての権限がチェックされています

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;

これは私に enter image description here

次にリストエラーが表示されるので、私は使用する必要があります

Set-AzureRmKeyVaultAccessPolicy -VaultName vaultname -ResourceGroupName location -ObjectId obid -PermissionsToKeys all -PermissionsToSecrets all 

これでエラーは解消されますが、.NET SDKを使用して解決できるように、解決策をお勧めします。

6
Pikapops

何年にもわたってこの問題を分類しようとした後、問題はアクセスポリシーコードにありました。ユーザーがコードに登録されると、ユーザーはアプリ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つだと思います。

6
Pikapops

同じ問題がありましたが、解決策は、ボールトのAccess Policiesブレードにアクセスして、アプリケーションをクリックし、Key permissions/Secret permissionsListをアクティブにすることでした。

12
Horia Toma