注
Key Vault リソース プロバイダーでは、コンテナーとマネージド HSM という 2 種類のリソースがサポートされています。 この記事で説明するアクセス制御は、ボールトにのみ適用されます。 マネージド HSM のアクセス制御の詳細については、「マネージド HSM アクセス制御」を参照してください。
Azure ロールベースのアクセス制御 (Azure RBAC) は Azure Resource Manager 上に構築された認可システムであり、Azure リソースに対する一元的なアクセス管理を提供します。
Azure RBAC を使用すると、ユーザーはキー、シークレット、証明書のアクセス許可を管理でき、すべてのキー コンテナーにわたるすべてのアクセス許可を 1 か所で管理できます。
Azure RBAC モデルを使用すると、ユーザーはさまざまなスコープ レベル (管理グループ、サブスクリプション、リソース グループ、または個別のリソース) にアクセス許可を設定することができます。 また、キー コンテナー用の Azure RBAC を使用すると、個々のキー、シークレット、および証明書に対して個別のアクセス許可を持つことができます。
詳細については、Azure ロールベースのアクセス制御 (Azure RBAC) に関するページを参照してください。
個々のキー、シークレット、証明書のロールの割り当てのベスト プラクティス
キー コンテナーのスコープでロールが割り当てられている環境 (開発、運用前、運用) ごとに、アプリケーションごとのコンテナーを使用することをお勧めします。
個々のキー、シークレット、証明書にロールを割り当てることは避ける必要があります。 例外は、個々のシークレットを複数のアプリケーション間で共有する必要があるシナリオです。たとえば、あるアプリケーションが別のアプリケーションのデータにアクセスする必要がある場合です。
Azure Key Vault 管理ガイドラインの詳細については、以下を参照してください。
Azure の Key Vault データ プレーン操作用組み込みロール
注
Key Vault Contributor
ロールは、キー コンテナーを管理するためのみのコントロール プレーン操作用です。 キー、シークレット、証明書へのアクセスは許可されていません。
組み込みロール | 説明 | 身分証明書 |
---|---|---|
キーボールト管理者 | キー コンテナーとその内部にあるすべてのオブジェクト (証明書、キー、シークレットを含む) に対して、すべてのデータ プレーン操作を実行します。 キーボールトのリソースや役割の割り当てを管理することはできません。 「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 データ プレーン ロールの割り当ての管理
組み込みロール | 説明 | 身分証明書 |
---|---|---|
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 データ アクセス管理者' を使用してアクセス許可モデルを変更することはできません。
新しいキー コンテナーで 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 ロールを割り当てる」を参照してください。
テストして検証する
注
ブラウザーにはキャッシュが使用されているため、ロールの割り当てを削除した後はページの更新が必要です。 ロールの割り当てが更新されるまで数分かかります
Key Vault レベルで "Key Vault Secrets Officer" ロールを使用せずに新しいシークレットの追加を検証します。
キー コンテナーの [アクセス制御 (IAM)] タブに移動し、このリソースへの "Key Vault Secrets Officer" ロールの割り当てを削除します。
以前に作成したシークレットに移動します。 すべてのシークレットのプロパティを表示できます。
新しいシークレットを作成すると ([シークレット] > [+ 生成またはインポート]) 次のエラーが表示されます。
シークレット レベルで "Key Vault Secret Officer" ロールを使用せずにシークレットの編集を検証します。
以前に作成したシークレットの [アクセス制御 (IAM)] タブに移動し、このリソースへの "Key Vault Secrets Officer" ロールの割り当てを削除します。
以前に作成したシークレットに移動します。 シークレットのプロパティが表示されます。
Key Vault レベルで Reader ロールを使用せずにシークレットの閲覧を検証します。
キー コンテナーのリソース グループの [アクセス制御 (IAM)] タブに移動し、"Key Vault Reader" ロールの割り当てを削除します。
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}"] \
}'
カスタム ロールの作成方法の詳細については、以下を参照してください。
よく寄せられる質問
Key Vault のロールベースのアクセス制御 (RBAC) アクセス許可モデルのオブジェクト スコープ割り当てを使用して、Key Vault 内のアプリケーション チームに分離性を提供できますか?
いいえ。 RBAC アクセス許可モデルでは、Key Vault 内の個々のオブジェクトへのアクセスをユーザーやアプリケーションに割り当てることができますが、ネットワーク アクセス制御、監視、オブジェクト管理などの管理操作にはコンテナー レベルのアクセス許可が必要です。これにより、セキュリティで保護された情報がアプリケーション チーム全体のオペレーターに公開されます。