Azure のロールベースのアクセス制御を使用して Key Vault のキー、証明書、シークレットへのアクセス権を付与する

Note

Key Vault リソース プロバイダーでは、コンテナーマネージド HSM という 2 種類のリソースがサポートされています。 この記事で説明するアクセス制御は、コンテナーにのみ適用されます。 マネージド HSM のアクセス制御の詳細については、「マネージド HSM アクセス制御」を参照してください。

Note

Azure Portal を使用した Azure App Service 証明書の構成では、Key Vault RBAC アクセス許可モデルはサポートされていませんが、Azure PowerShell、Azure CLI、ARM テンプレートのデプロイを使用できます。 App Service 証明書管理には、App Service グローバル ID (パブリック クラウド内の Microsoft Azure App Service グローバル ID など) 用の Key Vault シークレット ユーザーKey Vault 閲覧者ロールの割り当てが必要です。

Azure ロールベースのアクセス制御 (Azure RBAC) は Azure Resource Manager 上に構築された承認システムであり、Azure リソースに対するアクセスをきめ細かく管理できます。

Azure RBAC を使用すると、キー、シークレット、および証明書のアクセス許可を管理できます。 すべてのキー コンテナーにわたるすべてのアクセス許可を管理できる 1 つの場所が用意されています。

Azure RBAC モデルを使用すると、ユーザーはさまざまなスコープ レベル (管理グループ、サブスクリプション、リソース グループ、または個別のリソース) にアクセス許可を設定することができます。 また、Key Vault 用の Azure RBAC では、個々のキー、シークレット、および証明書に対してユーザーに個別のアクセス許可を持たせることもできます

詳細については、Azure ロールベースのアクセス制御 (Azure RBAC) に関するページを参照してください。

個々のキー、シークレット、証明書のロールの割り当てのベスト プラクティス

環境 (開発、実稼働前、および実稼働) ごとにアプリケーションごとのコンテナーを使用することをお勧めします。

個々のキー、シークレット、および証明書のアクセス許可は、次のように特定のシナリオにのみ使用するようにします。

  • 複数のアプリケーション間での個々のシークレットの共有。たとえば、あるアプリケーションが他のアプリケーションのデータにアクセスする必要がある場合など

Azure Key Vault 管理ガイドラインの詳細については、以下を参照してください。

Key Vault データ プレーン操作のための Azure の組み込みロール

Note

Key Vault Contributor ロールは、キー コンテナーを管理するためのみの管理プレーン操作用です。 キー、シークレット、証明書へのアクセスは許可されていません。

組み込みのロール 説明 id
Key Vault Administrator キー コンテナーとその内部にあるすべてのオブジェクト (証明書、キー、シークレットを含む) に対して、すべてのデータ プレーン操作を実行します。 キー コンテナー リソースの管理やロール割り当ての管理はできません。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。 00482a5a-887f-4fb3-b363-3b7fe8e74483
Key Vault Certificates Officer キーコンテナーの証明書に対して、アクセス許可の管理を除く任意の操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。 a4417e6f-fecd-4de8-b567-7b0420556985
Key Vault Crypto Officer キーコンテナーのキーに対して、アクセス許可の管理を除く任意の操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。 14b46e9e-c2b7-41b4-b07b-48a6ebf60603
Key Vault Crypto Service Encryption User キーのメタデータを読み取り、wrap および unwrap 操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。 e147488a-f6f5-4113-8e2d-b22465e65bf6
Key Vault Crypto User キーを使用した暗号化操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。 12338af0-0e69-4776-bea7-57ae8d297424
Key Vault Reader キー コンテナーとその証明書、キー、シークレットのメタデータを読み取ります。 シークレット コンテンツやキー マテリアルなどの機密値を読み取ることはできません。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。 21090545-7ca7-4776-b22c-e363652d74d2
Key Vault Secrets Officer キーコンテナーのシークレットに対して、アクセス許可の管理を除く任意の操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。 b86a8fe4-44ce-4948-aee5-eccb2c155cd7
Key Vault Secrets User 秘密キーを使用し、証明書のシークレット部分を含むシークレットの内容を読み取ります。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。 4633458b-17de-408a-b874-0445c86b69e6

Note

アプリケーションには秘密キーを持つ証明書のシークレット部分が必要であるため、Key Vault Certificate User はありません。 アプリケーションが証明書を取得するには、Key Vault Secrets User ロールを使用する必要があります。

Azure 組み込みロールの定義の詳細については、「Azure 組み込みロール」を参照してください。

組み込みの Key Vault データ プレーン ロールの割り当ての管理 (プレビュー)

組み込みのロール 説明 id
Key Vault データ アクセス管理者 (プレビュー) Key Vault 管理者、Key Vault 証明書オフィサー、Key Vault Crypto オフィサー、Key Vault Crypto サービス暗号化ユーザー、Key Vault Crypto ユーザー、Key Vault 閲覧者、Key Vault シークレット オフィサー、または Key Vault シークレット ユーザー ロールのロールを追加または削除して、Azure Key Vault へのアクセスを管理します。 ロールの割り当てを制限する ABAC 条件が含まれています。 8b54135c-b56d-4d72-a534-26097cfdc8d8

Key Vault での Azure RBAC シークレット、キー、および証明書のアクセス許可の使用

Key Vault の新しい Azure RBAC アクセス許可モデルには、コンテナー アクセス ポリシーのアクセス許可モデルに代わるものです。

前提条件

Azure サブスクリプションが必要です。 これがない場合、開始する前に無料アカウントを作成できます。

ロールの割り当てを追加するには、 Key Vault データ アクセス管理者 (プレビュー)ユーザー アクセス管理者所有者など、Microsoft.Authorization/roleAssignments/writeMicrosoft.Authorization/roleAssignments/delete のアクセス許可が必要です。

Key Vault で Azure RBAC アクセス許可を有効にする

Note

アクセス許可モデルを変更するには、所有者ロールとユーザー アクセス管理者ロールの一部である、"Microsoft.Authorization/roleAssignments/write" アクセス許可が必要です。 "サービス管理者" や "共同管理者" などの従来のサブスクリプション管理者ロールはサポートされていません。

  1. 新しいキー コンテナーで Azure RBAC アクセス許可を有効にします。

    Enable Azure RBAC permissions - new vault

  2. 既存のキー コンテナーで Azure RBAC アクセス許可を有効にします。

    Enable Azure RBAC permissions - existing vault

重要

Azure RBAC アクセス許可モデルを設定すると、すべてのアクセス ポリシーのアクセス許可が無効になります。 同等の Azure ロールが割り当てられていない場合、停止が発生する可能性があります。

ロールを割り当てる

Note

スクリプトでは、ロール名ではなく一意のロール ID を使用することをお勧めします。 こうすると、ロールの名前が変更されても、スクリプトは引き続き機能します。 このドキュメントでは、読みやすいようにロール名を使用しています。

ロールの割り当てを作成するには、次のコマンドを実行します。

az role assignment create --role <role_name_or_id> --assignee <assignee> --scope <scope>

詳細については、「Azure CLI を使用して Azure ロールを割り当てる」を参照してください。

Azure portal を使用してロールを割り当てるには、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。 Azure portal では、[アクセス制御 (IAM)] タブのすべてのリソースに [Azure ロールの割り当て] 画面を使用できます。

リソース グループのスコープ ロールの割り当て

  1. 自分のキー コンテナーが含まれているリソース グループに移動します。

    Role assignment - resource group

  2. [アクセス制御 (IAM)] を選択します。

  3. [追加]>[ロールの割り当ての追加] を選択して、[ロールの割り当ての追加] ページを開きます。

  4. 次のロールを割り当てます。 詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。

    設定
    Role Key Vault Reader
    アクセスの割り当て先 現在のユーザー
    メンバー メール アドレスで検索

    Add role assignment page in Azure portal.

az role assignment create --role "Key Vault Reader" --assignee {i.e user@microsoft.com} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}

詳細については、「Azure CLI を使用して Azure ロールを割り当てる」を参照してください。

前述のロール割り当てには、Key Vault 内の Key Vault オブジェクトを一覧表示する機能があります。

Key Vault スコープのロールの割り当て

  1. Key Vault > [アクセス制御 (IAM)] タブに移動します

  2. [追加]>[ロールの割り当ての追加] を選択して、[ロールの割り当ての追加] ページを開きます。

  3. 次のロールを割り当てます。 詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。

    設定
    Role Key Vault Secrets Officer
    アクセスの割り当て先 現在のユーザー
    メンバー メール アドレスで検索

    Add role assignment page in Azure portal.

az role assignment create --role "Key Vault Secrets Officer" --assignee {i.e jalichwa@microsoft.com} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{key-vault-name}

詳細については、「Azure CLI を使用して Azure ロールを割り当てる」を参照してください。

シークレット スコープのロールの割り当て

Note

キー コンテナー シークレット、証明書、キー スコープ ロールの割り当ては、セキュリティのベスト プラクティスに準拠するためにここで説明している限られたシナリオでのみ使用してください。

  1. 以前に作成したシークレットを開きます。

  2. [アクセス制御 (IAM)] タブをクリックします

    Role assignment - secret

  3. [追加]>[ロールの割り当ての追加] を選択して、[ロールの割り当ての追加] ページを開きます。

  4. 次のロールを割り当てます。 詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。

    設定
    Role Key Vault Secrets Officer
    アクセスの割り当て先 現在のユーザー
    メンバー メール アドレスで検索

    Add role assignment page in Azure portal.

az role assignment create --role "Key Vault Secrets Officer" --assignee {i.e user@microsoft.com} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{key-vault-name}/secrets/RBACSecret

詳細については、「Azure CLI を使用して Azure ロールを割り当てる」を参照してください。

テストして検証する

Note

ブラウザーにはキャッシュが使用されているため、ロールの割り当てを削除した後はページの更新が必要です。
ロールの割り当てが更新されるまで数分かかります

  1. Key Vault レベルで "Key Vault Secrets Officer" ロールを使用せずに新しいシークレットの追加を検証します。

    1. キー コンテナーの [アクセス制御 (IAM)] タブに移動し、このリソースへの "Key Vault Secrets Officer" ロールの割り当てを削除します。

      Remove assignment - key vault

    2. 以前に作成したシークレットに移動します。 すべてのシークレットのプロパティを表示できます。

      Secret view with access

    3. 新しいシークレットを作成すると ([シークレット] > [+ 生成またはインポート]) 次のエラーが表示されます。

      Create new secret

  2. シークレット レベルで "Key Vault Secret Officer" ロールを使用せずにシークレットの編集を検証します。

    1. 以前に作成したシークレットの [アクセス制御 (IAM)] タブに移動し、このリソースへの "Key Vault Secrets Officer" ロールの割り当てを削除します。

    2. 以前に作成したシークレットに移動します。 シークレットのプロパティが表示されます。

      Secret view without access

  3. Key Vault レベルで Reader ロールを使用せずにシークレットの閲覧を検証します。

    1. キー コンテナーのリソース グループの [アクセス制御 (IAM)] タブに移動し、"Key Vault Reader" ロールの割り当てを削除します。

    2. Key Vault の [シークレット] タブに移動すると、次のエラーが表示されます。

      Secret tab - error

カスタム ロールの作成

az role definition create コマンド

az role definition create --role-definition '{ \
   "Name": "Backup Keys Operator", \
   "Description": "Perform key backup/restore operations", \
    "Actions": [ 
    ], \
    "DataActions": [ \
        "Microsoft.KeyVault/vaults/keys/read ", \
        "Microsoft.KeyVault/vaults/keys/backup/action", \
         "Microsoft.KeyVault/vaults/keys/restore/action" \
    ], \
    "NotDataActions": [ 
   ], \
    "AssignableScopes": ["/subscriptions/{subscriptionId}"] \
}'

カスタム ロールの作成方法の詳細については、以下を参照してください。

Azure カスタム ロール

よく寄せられる質問:

Key Vault のロールベースのアクセス制御 (RBAC) アクセス許可モデルのオブジェクト スコープ割り当てを使用して、Key Vault 内のアプリケーション チームに分離性を提供できますか?

いいえ。 RBAC アクセス許可モデルでは、Key Vault 内の個々のオブジェクトへのアクセスをユーザーやアプリケーションに割り当てることができますが、ネットワーク アクセス制御、監視、オブジェクト管理などの管理操作にはコンテナー レベルのアクセス許可が必要です。これにより、セキュリティで保護された情報がアプリケーション チーム全体のオペレーターに公開されます。

詳細情報