キー コンテナーへのアクセスをセキュリティで保護するSecure access to a key vault

Azure Key Vault は、暗号化キーとシークレット (証明書、接続文字列、パスワードなど) を保護するクラウド サービスです。Azure Key Vault is a cloud service that safeguards encryption keys and secrets like certificates, connection strings, and passwords. このデータは機密性が高く、ビジネス上重要であるため、承認されたアプリケーションとユーザーだけを許可することで、ご利用のキー コンテナーへのアクセスをセキュリティで保護する必要があります。Because this data is sensitive and business critical, you need to secure access to your key vaults by allowing only authorized applications and users. この記事では、キー コンテナーのアクセス モデルの概要について説明します。This article provides an overview of the Key Vault access model. 認証と承認について、およびご利用のキー コンテナーへのアクセスをセキュリティで保護する方法について説明します。It explains authentication and authorization, and describes how to secure access to your key vaults.

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

アクセス モデルの概要Access model overview

キー コンテナーへのアクセスは、2 つのインターフェイス (管理プレーンデータ プレーン) を使用して制御します。Access to a key vault is controlled through two interfaces: the management plane and the data plane. 管理プレーンでは、Key Vault 自体の管理を行います。The management plane is where you manage Key Vault itself. このプレーンでは、キー コンテナーの作成および削除、Key Vault のプロパティの取得、アクセス ポリシーの更新などの操作を行います。Operations in this plane include creating and deleting key vaults, retrieving Key Vault properties, and updating access policies. データ プレーンでは、キー コンテナーに格納されているデータを操作します。The data plane is where you work with the data stored in a key vault. キー、シークレット、証明書の追加、削除、および変更を行うことができます。You can add, delete, and modify keys, secrets, and certificates.

いずれのプレーン内でもキー コンテナーにアクセスするには、すべての呼び出し元 (ユーザーまたはアプリケーション) が適切な認証と承認を必要とします。To access a key vault in either plane, all callers (users or applications) must have proper authentication and authorization. 認証では、呼び出し元の ID が確立されます。Authentication establishes the identity of the caller. 承認では、呼び出し元が実行できる操作が決定されます。Authorization determines which operations the caller can execute.

認証については、両方のプレーンで Azure Active Directory (Azure AD) が使用されます。Both planes use Azure Active Directory (Azure AD) for authentication. 承認については、管理プレーンではロールベースのアクセス制御 (RBAC) が使用され、データ プレーンでは Key Vault アクセス ポリシーが使用されます。For authorization, the management plane uses role-based access control (RBAC) and the data plane uses a Key Vault access policy.

Active Directory 認証Active Directory authentication

Azure サブスクリプション内でキー コンテナーを作成すると、作成したキー コンテナーは、そのサブスクリプションの Azure AD テナントに自動的に関連付けられます。When you create a key vault in an Azure subscription, it's automatically associated with the Azure AD tenant of the subscription. 両方のプレーンの呼び出し元はすべて、このテナントに登録されている必要があり、キー コンテナーにアクセスするには認証を行う必要があります。All callers in both planes must register in this tenant and authenticate to access the key vault. どちらの場合も、アプリケーションは次の 2 つの方法で Key Vault にアクセスできます。In both cases, applications can access Key Vault in two ways:

  • ユーザー + アプリケーション アクセス: サインインしたユーザーの代わりにアプリケーションによって Key Vault にアクセスされます。User plus application access: The application accesses Key Vault on behalf of a signed-in user. この種類のアクセスの例として、Azure PowerShell や Azure portal があります。Examples of this type of access include Azure PowerShell and the Azure portal. ユーザー アクセスは 2 つの方法で許可されます。User access is granted in two ways. ユーザーは任意のアプリケーションから Key Vault にアクセスできます。あるいはユーザーは特定のアプリケーションを使用してアクセスする必要があります (複合 ID と呼ばれます)。Users can access Key Vault from any application, or they must use a specific application (referred to as compound identity).
  • アプリケーション専用アクセス: アプリケーションは、デーモン サービスまたはバックグラウンド ジョブとして実行されます。Application-only access: The application runs as a daemon service or background job. アプリケーション ID にはキー コンテナーへのアクセス権が付与されます。The application identity is granted access to the key vault.

どちらの種類のアクセスの場合も、アプリケーションでは Azure AD を使用して認証が行われます。For both types of access, the application authenticates with Azure AD. アプリケーションでは、アプリケーションの種類に基づいてサポートされる認証方法が使用されます。The application uses any supported authentication method based on the application type. アプリケーションでは、アクセス権を付与するプレーン内のリソース用のトークを取得します。The application acquires a token for a resource in the plane to grant access. このリソースは、管理プレーンまたはデータ プレーン内にあるエンドポイントであり、Azure 環境に基づいています。The resource is an endpoint in the management or data plane, based on the Azure environment. アプリケーションでは、このトークンを使用して、Key Vault に REST API 要求を送信します。The application uses the token and sends a REST API request to Key Vault. 詳細については、認証フロー全体に関するページを確認してください。To learn more, review the whole authentication flow.

1 つのメカニズムで両方のプレーンを認証するモデルには次のようないくつかの利点があります。The model of a single mechanism for authentication to both planes has several benefits:

  • 組織では、組織内のすべてのキー コンテナーへのアクセスを一元的に管理できます。Organizations can control access centrally to all key vaults in their organization.
  • 退職したユーザーは、組織内のすべてのキー コンテナーに即座にアクセスできなくなります。If a user leaves, they instantly lose access to all key vaults in the organization.
  • 組織では、Azure AD のオプションを使用して認証をカスタマイズできます (セキュリティを強化するために多要素認証を有効にするなど)。Organizations can customize authentication by using the options in Azure AD, such as to enable multi-factor authentication for added security.

リソースのエンドポイントResource endpoints

アプリケーションによって、エンドポイントを介してプレーンにアクセスされます。Applications access the planes through endpoints. 2 つのプレーンに対するアクセス制御は独立して機能します。The access controls for the two planes work independently. キー コンテナー内のキーを使用するためのアクセスをアプリケーションに許可する場合は、Key Vault アクセス ポリシーを使用してデータ プレーンのアクセスを許可します。To grant an application access to use keys in a key vault, you grant data plane access by using a Key Vault access policy. ユーザーに対して Key Vault のプロパティおよびタグの読み取りアクセスは許可するが、データ (キー、シークレット、証明書) へのアクセスは許可しない場合は、RBAC を使用して管理プレーンのアクセスを許可します。To grant a user read access to Key Vault properties and tags, but not access to data (keys, secrets, or certificates), you grant management plane access with RBAC.

次の表に、管理プレーンとデータ プレーンのエンドポイントを示します。The following table shows the endpoints for the management and data planes.

アクセス  プレーンAccess plane アクセス エンドポイントAccess endpoints OperationsOperations アクセス制御メカニズム Access control mechanism
管理プレーンManagement plane グローバル:Global:
management.azure.com:443management.azure.com:443

Azure China 21Vianet:Azure China 21Vianet:
management.chinacloudapi.cn:443management.chinacloudapi.cn:443

Azure US Government:Azure US Government:
management.usgovcloudapi.net:443management.usgovcloudapi.net:443

Azure Germany:Azure Germany:
management.microsoftazure.de:443management.microsoftazure.de:443
キー コンテナーの作成、読み取り、更新、削除Create, read, update, and delete key vaults

Key Vault アクセス ポリシーの設定Set Key Vault access policies

Key Vault タグの設定Set Key Vault tags
Azure Resource Manager RBACAzure Resource Manager RBAC
データ プレーンData plane グローバル:Global:
<vault-name>.vault.azure.net:443<vault-name>.vault.azure.net:443

Azure China 21Vianet:Azure China 21Vianet:
<vault-name>.vault.azure.cn:443<vault-name>.vault.azure.cn:443

Azure US Government:Azure US Government:
<vault-name>.vault.usgovcloudapi.net:443<vault-name>.vault.usgovcloudapi.net:443

Azure Germany:Azure Germany:
<vault-name>.vault.microsoftazure.de:443<vault-name>.vault.microsoftazure.de:443
キー: 暗号化の解除、暗号化、Keys: decrypt, encrypt,
ラップ解除、ラップ、確認、サイン、unwrap, wrap, verify, sign,
取得、一覧表示、更新、作成、get, list, update, create,
インポート、削除、バックアップ、復元import, delete, backup, restore

シークレット: 取得、一覧表示、設定、削除Secrets: get, list, set, delete
Key Vault アクセス ポリシーKey Vault access policy

管理プレーンと RBACManagement plane and RBAC

管理プレーンでは、RBAC (ロールベースのアクセス制御) を使用して、呼び出し元が実行できる操作を承認します。In the management plane, you use RBAC(Role Based Access Control) to authorize the operations a caller can execute. RBAC モデルでは、各 Azure サブスクリプションに Azure AD のインスタンスが用意されています。In the RBAC model, each Azure subscription has an instance of Azure AD. このディレクトリからユーザー、グループ、アプリケーションにアクセス権を付与します。You grant access to users, groups, and applications from this directory. Azure サブスクリプションに含まれていて Azure Resource Manager デプロイ モデルを使用しているリソースを管理するためのアクセス権が付与されます。Access is granted to manage resources in the Azure subscription that use the Azure Resource Manager deployment model. アクセス権を付与するには、Azure portalAzure CLIAzure PowerShell、または Azure Resource Manager REST API を使用します。To grant access, use the Azure portal, the Azure CLI, Azure PowerShell, or the Azure Resource Manager REST APIs.

リソース グループ内にキー コンテナーを作成し、Azure AD を使用してアクセスを管理します。You create a key vault in a resource group and manage access by using Azure AD. リソース グループ内のキー コンテナーを管理する権限をユーザーまたはグループに付与します。You grant users or groups the ability to manage the key vaults in a resource group. 適切な RBAC ロールを割り当てることにより、特定のスコープ レベルでアクセス権を付与します。You grant the access at a specific scope level by assigning appropriate RBAC roles. キー コンテナーを管理するためのアクセス権をユーザーに付与するには、定義済みの key vault Contributor ロールを特定のスコープでそのユーザーに割り当てます。To grant access to a user to manage key vaults, you assign a predefined key vault Contributor role to the user at a specific scope. RBAC ロールには、次のスコープ レベルを割り当てることができます。The following scopes levels can be assigned to an RBAC role:

  • サブスクリプション:サブスクリプション レベルで割り当てられた RBAC ロールは、そのサブスクリプション内のすべてのリソース グループとリソースに適用されます。Subscription: An RBAC role assigned at the subscription level applies to all resource groups and resources within that subscription.
  • [リソース グループ] :リソース グループ レベルで割り当てられた RBAC ロールは、そのリソース グループ内のすべてのリソースに適用されます。Resource group: An RBAC role assigned at the resource group level applies to all resources in that resource group.
  • 特定のリソース: 特定のリソースに対して割り当てられた RBAC ロールは、そのリソースに適用されます。Specific resource: An RBAC role assigned for a specific resource applies to that resource. この場合、リソースは特定のキー コンテナーです。In this case, the resource is a specific key vault.

定義済みのロールが複数あります。There are several predefined roles. 定義済みのロールがニーズに合わない場合は、独自のロールを定義できます。If a predefined role doesn't fit your needs, you can define your own role. 詳細については、RBAC: 組み込みのロールに関するページをご覧ください。For more information, see RBAC: Built-in roles.

重要

ユーザーがキー コンテナーの管理プレーンに対する Contributor 権限を持っている場合は、そのユーザーは Key Vault アクセス ポリシーを設定することで、データ プレーンへのアクセス権を自分自身に付与できます。If a user has Contributor permissions to a key vault management plane, the user can grant themselves access to the data plane by setting a Key Vault access policy. ご利用のキー コンテナーへの Contributor ロール アクセス権を持つユーザーの管理は厳密に行う必要があります。You should tightly control who has Contributor role access to your key vaults. 承認されたユーザーだけがコンテナー、キー、シークレット、証明書にアクセスできるようにします。Ensure that only authorized persons can access and manage your key vaults, keys, secrets, and certificates.

データ プレーンとアクセス ポリシーData plane and access policies

データ プレーンのアクセス権を付与するには、キー コンテナーに対して Key Vault アクセス ポリシーを設定します。You grant data plane access by setting Key Vault access policies for a key vault. このようなアクセス ポリシーを設定するには、ユーザー、グループ、またはアプリケーションにそのキー コンテナーの管理プレーンに対する Contributor 権限を与える必要があります。To set these access policies, a user, group, or application must have Contributor permissions for the management plane for that key vault.

ユーザー、グループ、またはアプリケーションには、キー コンテナー内のキーやシークレットに対して特定の操作を行うためのアクセス権を付与します。You grant a user, group, or application access to execute specific operations for keys or secrets in a key vault. Key Vault では、1 つのキー コンテナーに対して最大 1,024 個のアクセス ポリシー エントリがサポートされています。Key Vault supports up to 1,024 access policy entries for a key vault. データ プレーンのアクセス権を複数のユーザーに付与するには、Azure AD セキュリティ グループを作成し、そのグループにユーザーを追加します。To grant data plane access to several users, create an Azure AD security group and add users to that group.

Key Vault アクセス ポリシーでは、キー、シークレット、および証明書へのアクセス許可が個別に付与されます。Key Vault access policies grant permissions separately to keys, secrets, and certificate. ユーザーに対してはキーへのアクセス権のみ付与でき、シークレットへのアクセス権は付与できません。You can grant a user access only to keys and not to secrets. キー、シークレット、証明書へのアクセス許可は、コンテナー レベルになります。Access permissions for keys, secrets, and certificates are at the vault level. Key Vault アクセス ポリシーでは、特定のキー、シークレット、証明書など、細かいオブジェクト レベルのアクセス許可はサポートされていません。Key Vault access policies don't support granular, object-level permissions like a specific key, secret, or certificate. キー コンテナーのアクセス ポリシーを設定するには、Azure portalAzure CLIAzure PowerShell、または Key Vault 管理 REST API を使用します。To set access policies for a key vault, use the Azure portal, the Azure CLI, Azure PowerShell, or the Key Vault Management REST APIs.

重要

Key Vault アクセス ポリシーはコンテナー レベルで適用されます。Key Vault access policies apply at the vault level. キーを作成および削除するためのアクセス許可を付与されたユーザーは、そのキー コンテナー内のすべてのキーに対してそれらの操作を実行できます。When a user is granted permission to create and delete keys, they can perform those operations on all keys in that key vault.

データ プレーンのアクセスは、Azure Key Vault の仮想ネットワーク サービス エンドポイントを使用して制限することができます。You can restrict data plane access by using virtual network service endpoints for Azure Key Vault. 追加のセキュリティ層に対してファイアウォールと仮想ネットワーク規則を構成するできます。You can configure firewalls and virtual network rules for an additional layer of security.

Example

この例で開発するアプリケーションでは、SSL 用の証明書が使用され、データの格納に Azure Storage が使用され、署名操作に RSA 2,048 ビット キーが使用されます。In this example, we're developing an application that uses a certificate for SSL, Azure Storage to store data, and an RSA 2,048-bit key for sign operations. このアプリケーションは、Azure 仮想マシン (VM) (または仮想マシン スケール セット) 内で実行されます。Our application runs in an Azure virtual machine (VM) (or a virtual machine scale set). キー コンテナーを使用してアプリケーション シークレットを格納することができます。We can use a key vault to store the application secrets. ブートス トラップ証明書を格納することができます。この証明書は、Azure AD に対して認証するアプリケーションによって使用されます。We can store the bootstrap certificate that's used by the application to authenticate with Azure AD.

次に示す格納されたキーとシークレットへのアクセス権が必要です。We need access to the following stored keys and secrets:

  • SSL 証明書: SSL に使用されます。SSL certificate: Used for SSL.
  • ストレージ キー: ストレージ アカウントへのアクセスに使用されます。Storage key: Used to access the Storage account.
  • RSA 2,048 ビット キー: 署名操作に使用されます。RSA 2,048-bit key: Used for sign operations.
  • ブートストラップ証明書:Azure AD による認証に使用されます。Bootstrap certificate: Used to authenticate with Azure AD. アクセスが許可されると、ストレージ キーをフェッチし、署名に RSA キーを使用できます。After access is granted, we can fetch the storage key and use the RSA key for signing.

次のロールを定義することで、アプリケーションの管理、デプロイ、および監査を行うことができるユーザーを指定する必要があります。We need to define the following roles to specify who can manage, deploy, and audit our application:

  • セキュリティ チーム:CSO (最高セキュリティ責任者) オフィスの IT スタッフまたは同様の共同作成者です。Security team: IT staff from the office of the CSO (Chief Security Officer) or similar contributors. セキュリティ チームはシークレットの適切な保管を担当します。The security team is responsible for the proper safekeeping of secrets. シークレットには SSL 証明書、署名に使用される RSA キー、接続文字列、ストレージ アカウント キーなどがあります。The secrets can include SSL certificates, RSA keys for signing, connection strings, and storage account keys.
  • 開発者と運用者: アプリケーションを開発して Azure にデプロイするスタッフです。Developers and operators: The staff who develop the application and deploy it in Azure. このチームのメンバーは、セキュリティ スタッフには属していません。The members of this team aren't part of the security staff. このメンバーには、SSL 証明書や RSA キーなどの機密データへのアクセス権を付与しないでください。They shouldn't have access to sensitive data like SSL certificates and RSA keys. このメンバーがデプロイするアプリケーションのみに機密データへのアクセス権を付与してください。Only the application that they deploy should have access to sensitive data.
  • 監査者:このロールは、開発メンバーでも一般的な IT スタッフでもない共同作成者のためのものです。Auditors: This role is for contributors who aren't members of the development or general IT staff. 監査者は、セキュリティ基準に確実に準拠するように証明書、キー、およびシークレットの使用と管理について検証します。They review the use and maintenance of certificates, keys, and secrets to ensure compliance with security standards.

これ以外に、アプリケーションのスコープ外にあるロールとしてサブスクリプション (またはリソース グループ) 管理者があります。There's another role that's outside the scope of our application: the subscription (or resource group) administrator. サブスクリプション管理者は、セキュリティ チームの初期のアクセス許可を設定します。The subscription admin sets up initial access permissions for the security team. サブスクリプション管理者は、アプリケーションで必要とされるリソースが属するリソース グループを使用して、セキュリティ チームにアクセス権を付与します。They grant access to the security team by using a resource group that has the resources required by the application.

ロールに対する次の操作を承認する必要があります。We need to authorize the following operations for our roles:

セキュリティ チームSecurity team

  • キー コンテナーを作成する。Create key vaults.
  • Key Vault のログ記録をオンにする。Turn on Key Vault logging.
  • キーとシークレットを追加する。Add keys and secrets.
  • ディザスター リカバリーのためにキーのバックアップを作成する。Create backups of keys for disaster recovery.
  • 特定の操作に対してアクセス許可をユーザーとアプリケーションに付与するように Key Vault アクセス ポリシーを設定する。Set Key Vault access policies to grant permissions to users and applications for specific operations.
  • キーとシークレットが定期的にロールされる。Roll the keys and secrets periodically.

開発者と運用者Developers and operators

  • ブートストラップ証明書と SSL 証明書 (拇印)、ストレージ キー (シークレットの URI)、署名用の RSA キー (キーの URI) についてはセキュリティ チームから参照を取得する。Get references from the security team for the bootstrap and SSL certificates (thumbprints), storage key (secret URI), and RSA key (key URI) for signing.
  • キーとシークレットにプログラムからアクセスするアプリケーションを開発し、デプロイする。Develop and deploy the application to access keys and secrets programmatically.

監査者Auditors

  • Key Vault ログを調べて、キーやシークレットが正しく使用されていること、さらにデータ セキュリティの標準に準拠していることを確認する。Review the Key Vault logs to confirm proper use of keys and secrets, and compliance with data security standards.

次の表はロールとアプリケーションのアクセス許可をまとめたものです。The following table summarizes the access permissions for our roles and application.

RoleRole 管理プレーンのアクセス許可Management plane permissions データ プレーンのアクセス許可Data plane permissions
セキュリティ チームSecurity team Key Vault ContributorKey Vault Contributor キー: バックアップ、作成、削除、取得、インポート、一覧表示、復元Keys: backup, create, delete, get, import, list, restore
シークレット: すべての操作Secrets: all operations
開発者と 運用者Developers and operators Key Vault デプロイ アクセス許可Key Vault deploy permission

メモ:このアクセス許可により、デプロイされた VM によりキー コンテナーからシークレットが取り込まれることが許可されます。Note: This permission allows deployed VMs to fetch secrets from a key vault.
なしNone
監査者Auditors なしNone キー: 一覧表示Keys: list
シークレット: 一覧表示Secrets: list

メモ:このアクセス許可により、監査者はログに出力されないキーとシークレットの属性 (タグ、ライセンス認証を行った日付、有効期限) を調べることができます。Note: This permission enables auditors to inspect attributes (tags, activation dates, expiration dates) for keys and secrets not emitted in the logs.
ApplicationApplication なしNone キー: 署名Keys: sign
シークレット: 取得Secrets: get

この 3 つのチーム ロールでは、Key Vault アクセス許可に加えて、他のリソースへのアクセス権も必要です。The three team roles need access to other resources along with Key Vault permissions. VM (または Azure App Service の Web Apps 機能) をデプロイする場合、開発者と運用者はそのような種類のリソースに対するContributorアクセス権が必要になります。To deploy VMs (or the Web Apps feature of Azure App Service), developers and operators need Contributor access to those resource types. 監査者には、Key Vault のログが格納されているストレージ アカウントに対する読み取りアクセス権が必要です。Auditors need read access to the Storage account where the Key Vault logs are stored.

証明書、アクセス キー、およびシークレットをプログラムでデプロイする方法の詳細については:For more information about how to deploy certificates, access keys, and secrets programmatically, see these resources:

アクセス許可の多くは Azure portal を使用して付与することができます。You can grant most of the access permissions by using the Azure portal. きめ細かいアクセス許可を付与するには、Azure PowerShell または Azure CLI を使用します。To grant granular permissions, you can use Azure PowerShell or the Azure CLI.

このセクションの PowerShell スニペットは、次の前提条件でビルドされています。The PowerShell snippets in this section are built with the following assumptions:

  • Azure AD 管理者は、3 つのロールを表す次のセキュリティ グループを作成しました: Contoso Security Team、Contoso App DevOps、Contoso App Auditors。The Azure AD administrator has created security groups to represent the three roles: Contoso Security Team, Contoso App DevOps, and Contoso App Auditors. 管理者はそれぞれのグループにユーザーを追加しました。The admin has added users to their respective groups.
  • リソースはすべて、ContosoAppRG リソース グループに配置されます。All resources are located in the ContosoAppRG resource group.
  • Key Vault のログは、contosologstorage ストレージ アカウントに格納されます。The Key Vault logs are stored in the contosologstorage storage account.
  • ContosoKeyVault キー コンテナーと contosologstorage ストレージ アカウントは、Azure の同じ場所にあります。The ContosoKeyVault key vault and the contosologstorage storage account are in the same Azure location.

サブスクリプション管理者は key vault Contributor ロールと User Access Administrator ロールをセキュリティ チームに割り当てます。The subscription admin assigns the key vault Contributor and User Access Administrator roles to the security team. これらのロールにより、セキュリティ チームはその他のリソースとキー コンテナー (両方とも ContosoAppRG リソース グループ内にあります) へのアクセスを管理できます。These roles allow the security team to manage access to other resources and key vaults, both of which in the ContosoAppRG resource group.

New-AzRoleAssignment -ObjectId (Get-AzADGroup -SearchString 'Contoso Security Team')[0].Id -RoleDefinitionName "key vault Contributor" -ResourceGroupName ContosoAppRG
New-AzRoleAssignment -ObjectId (Get-AzADGroup -SearchString 'Contoso Security Team')[0].Id -RoleDefinitionName "User Access Administrator" -ResourceGroupName ContosoAppRG

セキュリティ チームはキー コンテナーを作成し、ログ記録とアクセス許可を設定します。The security team creates a key vault and sets up logging and access permissions. Key Vault アクセス ポリシーのアクセス許可の詳細については、Azure Key Vault のキー、シークレット、証明書に関するページをご覧ください。For details about Key Vault access policy permissions, see About Azure Key Vault keys, secrets, and certificates.

# Create a key vault and enable logging
$sa = Get-AzStorageAccount -ResourceGroup ContosoAppRG -Name contosologstorage
$kv = New-AzKeyVault -Name ContosoKeyVault -ResourceGroup ContosoAppRG -SKU premium -Location 'westus' -EnabledForDeployment
Set-AzDiagnosticSetting -ResourceId $kv.ResourceId -StorageAccountId $sa.Id -Enabled $true -Category AuditEvent

# Set up data plane permissions for the Contoso Security Team role
Set-AzKeyVaultAccessPolicy -VaultName ContosoKeyVault -ObjectId (Get-AzADGroup -SearchString 'Contoso Security Team')[0].Id -PermissionsToKeys backup,create,delete,get,import,list,restore -PermissionsToSecrets get,list,set,delete,backup,restore,recover,purge

# Set up management plane permissions for the Contoso App DevOps role
# Create the new role from an existing role
$devopsrole = Get-AzRoleDefinition -Name "Virtual Machine Contributor"
$devopsrole.Id = $null
$devopsrole.Name = "Contoso App DevOps"
$devopsrole.Description = "Can deploy VMs that need secrets from a key vault"
$devopsrole.AssignableScopes = @("/subscriptions/<SUBSCRIPTION-GUID>")

# Add permissions for the Contoso App DevOps role so members can deploy VMs with secrets deployed from key vaults
$devopsrole.Actions.Add("Microsoft.KeyVault/vaults/deploy/action")
New-AzRoleDefinition -Role $devopsrole

# Assign the new role to the Contoso App DevOps security group
New-AzRoleAssignment -ObjectId (Get-AzADGroup -SearchString 'Contoso App Devops')[0].Id -RoleDefinitionName "Contoso App Devops" -ResourceGroupName ContosoAppRG

# Set up data plane permissions for the Contoso App Auditors role
Set-AzKeyVaultAccessPolicy -VaultName ContosoKeyVault -ObjectId (Get-AzADGroup -SearchString 'Contoso App Auditors')[0].Id -PermissionsToKeys list -PermissionsToSecrets list

ContosoAppRG リソース グループが作成されるサブスクリプションには、定義済みのカスタム ロールのみを割り当てることができます。Our defined custom roles are assignable only to the subscription where the ContosoAppRG resource group is created. 他のサブスクリプション内の他のプロジェクトにカスタム ロールを使用するには、そのロールのスコープに該当するサブスクリプションを追加します。To use a custom role for other projects in other subscriptions, add other subscriptions to the scope for the role.

この DevOps スタッフの場合、deploy/action アクセス許可に対するカスタム ロールの割り当ての対象はリソース グループです。For our DevOps staff, the custom role assignment for the key vault deploy/action permission is scoped to the resource group. ContosoAppRG リソース グループに作成された VM のみが、シークレット (SSL 証明書とブートストラップ証明書) へのアクセスを許可されます。Only VMs created in the ContosoAppRG resource group are allowed access to the secrets (SSL and bootstrap certificates). DevOps メンバーによって別のリソース グループに作成された VM は、シークレットの URI が含まれていたとしても、これらのシークレットにアクセスできません。VMs created in other resource groups by a DevOps member can't access these secrets, even if the VM has the secret URIs.

この例では、シンプルなシナリオを示します。Our example describes a simple scenario. 実際のシナリオはもっと複雑になることがあります。Real-life scenarios can be more complex. ニーズに基づいて、ご利用のキー コンテナーに対するアクセス許可を調整できます。You can adjust permissions to your key vault based on your needs. ここでは、アプリケーション内で DevOps スタッフによって使用されるキーとシークレットの参照 (URI と拇印) をセキュリティ チームが提供することを前提としました。We assumed the security team provides the key and secret references (URIs and thumbprints), which are used by the DevOps staff in their applications. 開発者/運用者には、すべてのデータ プレーン アクセスは必要ありません。Developers and operators don't require any data plane access. ご利用のキー コンテナーをセキュリティで保護する方法に重点を置きました。We focused on how to secure your key vault. ご利用の VMストレージ アカウントなどの Azure リソースをセキュリティで保護する場合も、同じようなことを考慮します。Give similar consideration when you secure your VMs, storage accounts, and other Azure resources.

注意

この例では、運用環境で Key Vault のアクセスがロックダウンされる仕組みを示しています。This example shows how Key Vault access is locked down in production. 開発者は、アプリケーションを開発する場合、自分のキー コンテナー、VM、ストレージ アカウントを管理するための完全なアクセス許可を持つ独自のサブスクリプションまたはリソース グループを用意する必要があります。Developers should have their own subscription or resource group with full permissions to manage their vaults, VMs, and the storage account where they develop the application.

Key Vault のファイアウォールと仮想ネットワークを構成することで、ご利用のキー コンテナーへのアクセスに追加のセキュリティ保護を設定することをお勧めします。We recommend that you set up additional secure access to your key vault by configuring Key Vault firewalls and virtual networks.

リソースResources

次の手順Next steps

Key Vault のファイアウォールと仮想ネットワークを構成します。Configure Key Vault firewalls and virtual networks.

管理者用の概要チュートリアルについては、「Azure Key Vault とは」をご覧ください。For a getting-started tutorial for an administrator, see What is Azure Key Vault?.

Key Vault の使用状況に関するログ記録について詳しくは、「Azure Key Vault のログ記録」をご覧ください。For more information about usage logging for Key Vault, see Azure Key Vault logging.

Azure Key Vault でキーとシークレットを使用する方法の詳細については、キーとシークレットに関する記事をご覧ください。For more information about using keys and secrets with Azure Key Vault, see About keys and secrets.

Key Vault に関する質問がある場合は、フォーラムにアクセスしてください。If you have questions about Key Vault, visit the forums.