次の方法で共有


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

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

Azure ロールベースのアクセス制御 (Azure RBAC) は Azure Resource Manager 上に構築された認可システムであり、Azure リソースに対する一元的なアクセス管理を提供します。

Azure RBAC を使用すると、ユーザーはキー、シークレット、証明書のアクセス許可を管理でき、すべてのキー コンテナーにわたるすべてのアクセス許可を 1 か所で管理できます。

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

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

Key Vault アクセス モデルの概要

キー コンテナーへのアクセスは、2 つのインターフェイス、つまりコントロール プレーンデータ プレーンを介して制御されます。

コントロール プレーンは、Key Vault 自体を管理する場所です。 このプレーンでの操作には、キー コンテナーの作成と削除、Key Vault のプロパティの取得、アクセス ポリシーの更新が含まれます。

データ プレーンは、キー コンテナーに格納されているデータを操作する場所です。 キー、シークレット、証明書を追加、削除、変更できます。

どちらのプレーンでも、認証に Microsoft Entra ID が 使用されます。 承認のために、コントロール プレーンは Azure ロールベースのアクセス制御 (Azure RBAC) を使用し、データ プレーンは Key Vault のデータ プレーン操作にKey Vault アクセス ポリシー (レガシ) または Azure RBAC を使用します。

いずれのプレーン内でもキー コンテナーにアクセスするには、すべての呼び出し元 (ユーザーまたはアプリケーション) が適切な認証と承認を必要とします。 認証は、呼び出し元の ID を確立します。 Authorization は、呼び出し元が実行できる操作を決定します。

アプリケーションは、エンドポイントを介してプレーン構造にアクセスします。 2つのプレーンのアクセス制御はそれぞれ独立して機能します。 キー コンテナー内のキーを使用するためのアクセス権をアプリケーションに付与するには、Azure RBAC または Key Vault アクセス ポリシーを使用してデータ プレーンへのアクセスを許可します。 ユーザーに Key Vault のプロパティとタグへの読み取りアクセス権を付与し、データ (キー、シークレット、または証明書) へのアクセスを許可しない場合は、Azure RBAC を使用してコントロール プレーンへのアクセスを許可します。

アクセス プレーン エンドポイント

次の表に、コントロールプレーンとデータプレーンのエンドポイントを示します。

アクセス プレーン エンドポイントにアクセスする オペレーション アクセス制御メカニズム
コントロール プレーン グローバル:
management.azure.com:443

21Vianet が運営する Microsoft Azure:
management.chinacloudapi.cn:443

Azure US Government:
management.usgovcloudapi.net:443
キー ボールトの作成、読み取り、更新、削除

Key Vault のアクセス ポリシーを設定する

Key Vault タグを設定する
Azure RBAC
データ プレーン グローバル:
<vault-name>.vault.azure.net:443

21Vianet が運営する Microsoft Azure:
<vault-name>.vault.azure.cn:443

Azure US Government:
<vault-name>.vault.usgovcloudapi.net:443
キー: encrypt、decrypt、wrapKey、unwrapKey、sign、verify、get、list、create、update、import、delete、recover、backup、restore、purge、rotate、getrotationpolicy、setrotationpolicy、release

認定資格証: managecontacts、getissuers、listissuers、setissuers、deleteissuers、manageissuers、get、list、create、import、update、delete、recover、backup、restore、purge

シークレット: 取得、一覧表示、設定、削除、回復、バックアップ、復元、消去
Key Vault アクセス ポリシー (レガシー)または Azure RBAC

Key Vault への管理アクセスの管理

リソース グループにキー コンテナーを作成する場合は、Microsoft Entra ID を使用してアクセスを管理します。 ユーザーまたはグループに、リソース グループ内のキー ボールトを管理する権限を付与します。 適切な Azure ロールを割り当てることで、特定のスコープ レベルでアクセス権を付与できます。 ユーザーにキー ボールトを管理するためのアクセス権を付与するには、定義済みのKey Vault Contributorロールを特定のスコープでユーザーに割り当てます。 Azure ロールには、次のスコープ レベルを割り当てることができます。

  • サブスクリプション: サブスクリプション レベルで割り当てられた Azure ロールは、そのサブスクリプション内のすべてのリソース グループとリソースに適用されます。
  • リソース グループ: リソース グループ レベルで割り当てられた Azure ロールは、そのリソース グループ内のすべてのリソースに適用されます。
  • 特定のリソース: 特定のリソースに割り当てられた Azure ロールがそのリソースに適用されます。 この場合、リソースは特定の Key Vault です。

定義済みのロールがいくつかあります。 定義済みのロールがニーズに合わない場合は、独自のロールを定義できます。 詳しくは、Azure RBAC の組み込みロールに関するページをご覧ください。

重要

ユーザーがキー コンテナー コントロール プレーンに対する Contributor アクセス許可を持っている場合、ユーザーは Key Vault アクセス ポリシーを設定することで、データ プレーンへのアクセス権を自分自身に付与できます。 ご利用のキー コンテナーへの Contributor ロール アクセス権を持つユーザーの管理は厳密に行う必要があります。 承認されたユーザーのみが、キー コンテナー、キー、シークレット、証明書にアクセスして管理できることを確認します。

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

キー コンテナーのスコープでロールが割り当てられている環境 (開発、運用前、運用) ごとに、アプリケーションごとのコンテナーを使用することをお勧めします。

個々のキー、シークレット、証明書にロールを割り当てることは推奨されません。 例外には、次のようなシナリオが含まれます。

  • 個々のシークレットには、個々のユーザー アクセスが必要です。たとえば、 ユーザーは、Azure Bastion を使用して仮想マシンに対して認証するために SSH 秘密キーを読み取る必要があります。
  • 個々のシークレットは複数のアプリケーション間で共有する必要があります。たとえば、あるアプリケーションが別のアプリケーションのデータにアクセスする必要がある場合などです。

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

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

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

組み込みロール 説明 ID
キーボールト管理者 キー コンテナーとその内部にあるすべてのオブジェクト (証明書、キー、シークレットを含む) に対して、すべてのデータ プレーン操作を実行します。 キーボールトのリソースや役割の割り当てを管理することはできません。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー ボールトでのみ機能します。 00482a5a-887f-4fb3-b363-3b7fe8e74483
キー・ボールト・リーダー キー コンテナーとその証明書、キー、シークレットのメタデータを読み取ります。 シークレット コンテンツやキー マテリアルなどの機密値を読み取ることはできません。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー ボールトでのみ機能します。 21090545-7ca7-4776-b22c-e363652d74d2
Key Vault の消去演算子 論理的に削除されたコンテナーの完全な削除を許可します。 a68e7c17-0ab2-4c09-9a58-125dae29748c
Key Vault 証明書責任者 アクセス許可の管理を除き、キー ボールトの証明書に対してアクションを実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー ボールトでのみ機能します。 a4417e6f-fecd-4de8-b567-7b0420556985
キーボールト証明書ユーザー シークレットおよびキー部分を含む証明書の内容全体を読み取ります。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー ボールトでのみ機能します。 db79e9a7-68ee-4b58-9aeb-b90e7c24fcba
Key Vault 暗号化担当者 キー ボールトのキーに対して、アクセス許可の管理を除くあらゆる操作を実行できます。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー ボールトでのみ機能します。 14b46e9e-c2b7-41b4-b07b-48a6ebf60603
キー・ボールト 暗号サービス 暗号化ユーザー キーのメタデータを読み取り、wrap および unwrap 操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー ボールトでのみ機能します。 e147488a-f6f5-4113-8e2d-b22465e65bf6
キーボールト暗号ユーザー キーを使用した暗号化操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー ボールトでのみ機能します。 12338af0-0e69-4776-bea7-57ae8d297424
Key Vault 暗号化サービス リリース ユーザー Azure Confidential Computing 環境およびこれと同等な環境用のリリース キー。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー ボールトでのみ機能します。
Key Vault シークレット責任者 キーコンテナーのシークレットに対して、アクセス許可の管理を除く任意の操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー ボールトでのみ機能します。 b86a8fe4-44ce-4948-aee5-eccb2c155cd7
Key Vault シークレット ユーザー 秘密キーを使用し、証明書のシークレット部分を含むシークレットの内容を読み取ります。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー ボールトでのみ機能します。 4633458b-17de-408a-b874-0445c86b69e6

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 シークレット、キー、および証明書のアクセス許可の使用

新しい Azure RBAC アクセス許可モデルは、Key Vault のボールト アクセス ポリシー アクセス許可モデルの代替手段を提供します。

前提条件

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

ロールの割り当てを管理するには、Microsoft.Authorization/roleAssignments/write (特定の Key Vault ロールの割り当て/削除のみにアクセス許可が制限されている)、Microsoft.Authorization/roleAssignments/delete所有者などの、 のアクセス許可が必要です。

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

アクセス許可モデルを変更するには、所有者ユーザー アクセス管理者のロールの一部である、制限なしの 'Microsoft.Authorization/roleAssignments/write' アクセス許可が必要です。 'サービス管理者' や '共同管理者' などの従来のサブスクリプション管理者ロール、または制限された 'Key Vault データ アクセス管理者' を使用してアクセス許可モデルを変更することはできません。

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

    Azure RBAC アクセス許可を有効にする - 新しいコンテナー

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

    Azure RBAC アクセス許可を有効にする - 既存のコンテナー

重要

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

ロールを割り当てる

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

Azure CLI を使用してロールの割り当てを作成するには、az role assignment コマンドを使用します。

az role assignment create --role {role-name-or-id} --assignee {assignee-upn}> --scope {scope}

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

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

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 スコープのロールの割り当て

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

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

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

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

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 ロールを割り当てる」を参照してください。

テストして検証する

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

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

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

      割り当ての削除 - キー コンテナー

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

      アクセス権を持つシークレット ビュー

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

      新しいシークレットを作成する

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

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

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

      アクセス権のないシークレット ビュー

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

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

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

      [シークレット] タブ - エラー

カスタム ロールの作成

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 カスタム ロール

よく寄せられる質問

Azure RBAC オブジェクト スコープの割り当てを使用して、Key Vault 内のアプリケーション チームを分離することはできますか?

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

詳細情報