Azure Key Vault には、Azure ロールベースのアクセス制御 (Azure RBAC) とアクセス ポリシー モデルの 2 つの認可システムが用意されています。 Azure RBAC は、Azure Key Vault の既定であり、お勧めの認可システムです。 2 つの承認方法の比較については、 Azure ロールベースのアクセス制御 (Azure RBAC) とアクセス ポリシーに関するページを参照してください。
この記事では、アクセス ポリシー モデルから Azure RBAC モデルにキー コンテナーを移行するために必要な情報を提供します。
Azure ロール マッピングへのアクセス ポリシー
Azure RBAC には、ユーザー、グループ、サービス プリンシパル、マネージド ID に割り当てることのできる Azure 組み込みロールがいくつかあります。 組み込みロールが組織の特定のニーズを満たしていない場合は、独自の Azure カスタム ロールを作成できます。
キー、証明書、シークレットのアクセス管理用の Key Vault 組み込みロール:
- キーボールト管理者
- キーボールトリーダー
- Key Vault の消去演算子
- Key Vault 証明書責任者
- キーボールト証明書ユーザー
- キーボールト暗号責任者
- キーボールト暗号化ユーザー
- キー・ボールト 暗号サービス 暗号化ユーザー
- Key Vault Crypto Service リリースユーザー
- Key Vault シークレット責任者
- キー・ボルト・シークレット・ユーザー
既存の組み込みロールの詳細については、Azure の組み込みロールに関するページを参照してください。
コンテナー アクセス ポリシーは、個別に選択したアクセス許可、または定義済みのアクセス許可テンプレートを使用して割り当てることができます。
アクセス ポリシーの定義済みアクセス許可テンプレート:
- キー、シークレット、および証明書の管理
- キーおよびシークレットの管理
- シークレットおよび証明書の管理
- キー管理
- シークレット管理
- 証明書管理
- SQL Server コネクタ
- Azure Data Lake Storage または Azure Storage
- Azure バックアップ
- Exchange Online カスタマー キー
- SharePoint Online カスタマー キー
- Azure Information BYOK
Azure ロール マッピングへのアクセス ポリシー テンプレート
アクセス ポリシー テンプレート | 操作 | Azure ロール |
---|---|---|
キー、シークレット、および証明書の管理 | キー: すべての操作 証明書: すべての操作 シークレット: すべての操作 |
キーボールト管理者 |
キーおよびシークレットの管理 | キー: すべての操作 シークレット: すべての操作 |
鍵保管庫暗号責任者 Key Vault シークレット責任者 |
シークレットおよび証明書の管理 | 証明書: すべての操作 シークレット: すべての操作 |
Key Vault 証明書責任者 Key Vault シークレット責任者 |
キー管理 | キー: すべての操作 | キーボールト暗号責任者 |
シークレット管理 | シークレット: すべての操作 | Key Vault シークレット責任者 |
証明書管理 | 証明書: すべての操作 | Key Vault 証明書責任者 |
SQL Server コネクタ | キー: 取得、一覧表示、キーを折り返す、キーの折り返しを解除 | キー・ボールト 暗号サービス 暗号化ユーザー |
Azure Data Lake Storage または Azure Storage | キー: 取得、一覧表示、キーの折り返しを解除 | なし カスタム ロールが必要 |
Azure バックアップ | キー: 取得、一覧表示、バックアップ シークレット: 取得、一覧表示、バックアップ |
なし カスタム ロールが必要 |
Exchange Online カスタマー キー | キー: 取得、一覧表示、キーを折り返す、キーの折り返しを解除 | キー・ボールト 暗号サービス 暗号化ユーザー |
Exchange Online カスタマー キー | キー: 取得、一覧表示、キーを折り返す、キーの折り返しを解除 | キー・ボールト 暗号サービス 暗号化ユーザー |
Azure Information BYOK | キー: 取得、復号化、署名 | なし カスタム ロールが必要 |
割り当てスコープのマッピング
Key Vault 用の Azure RBAC では、次のスコープでロールを割り当てることができます。
- 管理グループ
- サブスクリプション
- 資源グループ
- Key Vault リソース
- 個々のキー、シークレット、証明書
コンテナー アクセス ポリシーのアクセス許可モデルは、Key Vault リソース レベルでのみポリシーを割り当てることができるように制限されています。
一般に、アプリケーションごとに 1 つのキー コンテナーを持ち、キー コンテナー レベルでアクセスを管理することをお勧めします。 他のスコープでアクセスを管理すると、アクセス管理が簡単になる場合があります。
インフラストラクチャ、セキュリティ管理者、オペレーター: コンテナー アクセス ポリシーを使用して、管理グループ、サブスクリプション、またはリソース グループ レベルでキー コンテナーのグループを管理するには、各キー コンテナーのポリシーを維持する必要があります。 Azure RBAC では、管理グループ、サブスクリプション、またはリソース グループで 1 つのロールの割り当てを作成できます。 この割り当ては、同じスコープで作成された新しいキー ボールトに適用されます。 このシナリオでは、永続アクセス権を付与するよりも、ジャストインタイム アクセスで Privileged Identity Management を使用することをお勧めします。
アプリケーション: アプリケーションが他のアプリケーションとシークレットを共有する必要があるシナリオがあります。 ボールト アクセス ポリシーを使用して、すべてのシークレットにアクセス権を付与しないように、別のキー ボールトを作成する必要がありました。 Azure RBAC では、単一のキー コンテナーを使用する代わりに、個々のシークレットのスコープでロールを割り当てることができます。
移行方法
アクセス ポリシーから RBAC にキー コンテナーを移行するには、次の手順に従います。
- 準備: 適切なアクセス許可とアプリケーションのインベントリがあることを確認します。
- インベントリ: 既存のすべてのアクセス ポリシーとアクセス許可を文書化します。
- RBAC ロールの作成: 各セキュリティ プリンシパルに適切な RBAC ロールを割り当てます。
- RBAC を有効にする: キー ボールトを RBAC のアクセス許可モデルに切り替えます。
- 検証: アクセスをテストして、すべてのアプリケーションとユーザーが適切なアクセスを保持していることを確認します。
- 監視: アクセスの問題の監視とアラートを設定します。
前提条件
移行を開始する前に、次のことを確認してください。
必要なアクセス許可: キー コンテナーに対する次のアクセス許可が必要です。
- 所有者およびユーザー アクセス管理者ロールに含まれる
Microsoft.Authorization/roleAssignments/write
アクセス許可 - Key Vault 共同作成者ロールに含まれる
Microsoft.KeyVault/vaults/write
アクセス許可
注記
従来のサブスクリプション管理者ロール (サービス管理者と Co-Administrator) はサポートされていません。
- 所有者およびユーザー アクセス管理者ロールに含まれる
アプリケーションと ID のインベントリ: キー コンテナーにアクセスするすべてのアプリケーション、サービス、およびユーザーを一覧表示し、現在のアクセス ポリシーと付与するアクセス許可をすべて文書化します。
現在のアクセス ポリシーの一覧
セキュリティ プリンシパル (ユーザー、グループ、サービス プリンシパル) とそのアクセス許可に関する説明を含め、既存のすべてのアクセス ポリシーを文書化します。
Azure CLI az keyvault show コマンドを使用して、アクセス ポリシーを取得します。
# List all current access policies
az keyvault show --name <vault-name> --resource-group <resource-group-name> --query properties.accessPolicies
同等の RBAC ロールの割り当てを作成する
アクセス ポリシーを持つセキュリティ プリンシパルごとに、上記のマッピング テーブルに基づいて 1 つ以上の RBAC ロールの割り当てを作成します。
az role assignment create コマンドを使用して、適切なロールを付与します。
# Example for Key Vault Administrator role:
az role assignment create --role "Key Vault Administrator" --assignee "<object-id-or-email>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
# Example for Key Vault Secrets Officer:
az role assignment create --role "Key Vault Secrets Officer" --assignee "<object-id-or-email>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
# Example for Key Vault Crypto Officer:
az role assignment create --role "Key Vault Crypto Officer" --assignee "<object-id-or-email>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
# Example for Key Vault Certificates Officer:
az role assignment create --role "Key Vault Certificates Officer" --assignee "<object-id-or-email>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
RBAC アクセス許可モデルを有効にする
必要なすべてのロールの割り当てを作成したら、ボールトをRBAC権限モデルを使用するように切り替えます。
az keyvault update コマンドを使用して RBAC を有効にします。
# Switch the vault to RBAC permission model
az keyvault update --name <vault-name> --resource-group <resource-group-name> --enable-rbac-authorization true
アクセスの検証
コンテナーへのアクセスをテストして、すべてのアプリケーションとユーザーが引き続き必要な操作を実行できることを確認します。
次のコマンドを使用してアクセスをテストします。
# Try to list secrets to verify access
az keyvault secret list --vault-name <vault-name>
# Try to get a secret to verify access
az keyvault secret show --vault-name <vault-name> --name <secret-name>
監視とアラートの設定
移行後、アクセスの問題を検出するための適切な監視を設定します。
az monitor diagnostic-settings create コマンドを使用します。
# Enable diagnostics logging for Key Vault
az monitor diagnostic-settings create --resource <vault-id> --name KeyVaultLogs --logs "[{\"category\":\"AuditEvent\",\"enabled\":true}]" --workspace <log-analytics-workspace-id>
Azure Policy を使用した移行ガバナンス
Azure Policy サービスを使用すると、コンテナー間での RBAC アクセス許可モデルの移行を管理できます。 カスタム ポリシー定義を作成して、既存のキー コンテナーを監査し、すべての新しいキー コンテナーに Azure RBAC アクセス許可モデルを使用するように強制できます。
Key Vault Azure RBAC アクセス許可モデルのポリシー定義を作成して割り当てる
- Policy リソースに移動します
- Azure Policy ページの左側にある [作成] の下の [割り当て] を選択します
- ページの上部にある [ ポリシーの割り当て] を選択する
- 次の情報を入力します。
- サブスクリプションとリソース グループを選択してポリシーのスコープを定義する
- ポリシー定義 "[プレビュー]: Azure Key Vault は RBAC アクセス許可モデルを使用する必要があります" を選択します。
- ポリシーの目的の効果を定義する (監査、拒否、または無効)
- 課題を確認して作成して、課題を完了する
ポリシーが割り当てられると、スキャンが完了するまでに最大 24 時間かかることがあります。 スキャンが完了すると、Azure Policy ダッシュボードにコンプライアンスの結果が表示されます。
Azure RBAC 比較ツールへのアクセス ポリシー
重要
このツールは、Microsoft コミュニティ メンバーによって構築および保守されており、正式なカスタマー サポート サービスのサポートはありません。 このツールは現状有姿で提供され、いかなる保証も行いません。
割り当てられた RBAC ロールと Key Vault アクセス ポリシーを比較し、アクセス ポリシーから RBAC アクセス許可モデルへの移行に役立つ PowerShell ツール。 このツールの目的は、既存の Key Vault を RBAC アクセス許可モデルに移行する際にサニティ チェックを提供し、基になるデータ アクションを持つ割り当てられたロールが既存のアクセス ポリシーに対応していることを確認することです。
一般的な問題のトラブルシューティング
- ロールの割り当ての遅延: ロールの割り当てが反映されるまでに数分かかる場合があります。 アプリケーションに再試行ロジックを実装します。
- 復旧後に失われるロールの割り当て: 論理的な削除後にコンテナーを復旧しても、ロールの割り当ては保持されません。 復旧後にすべてのロールの割り当てを再作成する必要があります。
- アクセス拒否エラー: 次のことを確認します。
- 適切なロールが適切なスコープで割り当てられます
- サービス プリンシパルまたはマネージド ID に、必要なアクセス許可が正確に設定されている。
- ネットワーク アクセス規則によって接続がブロックされない
- 移行後にスクリプトが失敗する: 代わりにロールの割り当てを使用するようにアクセス ポリシーを使用したスクリプトを更新します。