Azure Key Vault の基本的な概念Azure Key Vault basic concepts

Azure Key Vault は、シークレットを安全に保管し、それにアクセスするためのクラウド サービスです。Azure Key Vault is a cloud service for securely storing and accessing secrets. シークレットは、API キー、パスワード、証明書、暗号化キーなど、アクセスを厳密に制御する必要がある任意のものです。A secret is anything that you want to tightly control access to, such as API keys, passwords, certificates, or cryptographic keys. Key Vault サービスでは、ボールトおよび Managed HSM プールという 2 種類のコンテナーがサポートされています。Key Vault service supports two types of containers: vaults and managed HSM pools. ボールトでは、ソフトウェアと HSM でバックアップされるキー、シークレット、証明書を保存できます。Vaults support storing software and HSM-backed keys, secrets, and certificates. Managed HSM プールは、HSM でバックアップされるキーにのみ対応しています。Managed HSM pools only support HSM-backed keys. 詳細については、Azure Key Vault REST API の概要に関するページを参照してください。See Azure Key Vault REST API overview for complete details.

その他の重要な用語を次に示します。Here are other important terms:

  • Tenant : テナントは、Microsoft クラウド サービスの特定のインスタンスを所有および管理する組織です。Tenant : A tenant is the organization that owns and manages a specific instance of Microsoft cloud services. ほとんどの場合、この用語は、組織の Azure と Microsoft 365 の一連のサービスを指すために使用されます。It's most often used to refer to the set of Azure and Microsoft 365 services for an organization.

  • コンテナーの所有者 :コンテナー所有者は、キー コンテナーを作成し、それにフル アクセスして制御することができます。Vault owner : A vault owner can create a key vault and gain full access and control over it. コンテナー所有者は、だれがシークレットとキーにアクセスしたかをログに記録するように監査を設定することもできます。The vault owner can also set up auditing to log who accesses secrets and keys. 管理者は、キーのライフサイクルを制御できます。Administrators can control the key lifecycle. 新しいバージョンのキーへの切り替え、キーのバックアップ、および関連タスクを行うことができます。They can roll to a new version of the key, back it up, and do related tasks.

  • コンテナー コンシューマー :コンテナー コンシューマーは、コンテナー所有者によってアクセスを許可されると、キー コンテナー内のアセットに対してアクションを実行できます。Vault consumer : A vault consumer can perform actions on the assets inside the key vault when the vault owner grants the consumer access. 使用可能なアクションは、付与されるアクセス許可によって異なります。The available actions depend on the permissions granted.

  • Managed HSM 管理者 :管理者ロールが割り当てられているユーザーは、Managed HSM プールを完全に制御できます。Managed HSM Administrators : Users who are assigned the Administrator role have complete control over a Managed HSM pool. ロール割り当てをさらに作成し、制御されたアクセスを他のユーザーに委任できます。They can create more role assignments to delegate controlled access to other users.

  • Managed HSM Crypto Officer とユーザー :Managed HSM でキーを使用して暗号操作を実行するユーザーまたはサービス プリンシパルに通常割り当てられる組み込みロール。Managed HSM Crypto Officer/User : Built-in roles that are usually assigned to users or service principals that will perform cryptographic operations using keys in Managed HSM. Crypto User は新しいキーを作成できますが、キーを削除することはできません。Crypto User can create new keys, but cannot delete keys.

  • Managed HSM Crypto サービスの暗号化 :顧客が管理するキーで保存データを暗号化するためのサービス アカウント管理サービス ID (ストレージ アカウントなど) に通常割り当てられる組み込みロール。Managed HSM Crypto Service Encryption : Built-in role that is usually assigned to a service accounts managed service identity (e.g. Storage account) for encryption of data at rest with customer managed key.

  • リソース :リソースは、Azure を通じて使用できる、管理可能な要素です。Resource : A resource is a manageable item that's available through Azure. 一般的な例として、仮想マシン、ストレージ アカウント、Web アプリ、データベース、仮想ネットワークなどがあります。Common examples are virtual machine, storage account, web app, database, and virtual network. 他にもさまざまなリソースが存在します。There are many more.

  • [リソース グループ] :リソース グループは、Azure ソリューションの関連するリソースを保持するコンテナーです。Resource group : A resource group is a container that holds related resources for an Azure solution. リソース グループには、ソリューションのすべてのリソースか、グループとして管理したいリソースのみを含めることができます。The resource group can include all the resources for the solution, or only those resources that you want to manage as a group. 組織にとって最も有用になるように、リソースをリソース グループに割り当てる方法を決定します。You decide how you want to allocate resources to resource groups, based on what makes the most sense for your organization.

  • セキュリティ プリンシパル :Azure セキュリティ プリンシパルは、ユーザーが作成したアプリ、サービス、オートメーション ツールで特定の Azure リソースにアクセスするために使用されるセキュリティ ID です。Security principal : An Azure security principal is a security identity that user-created apps, services, and automation tools use to access specific Azure resources. アクセス許可が厳しく管理された、特定のロールが与えられた "ユーザー ID" (ユーザー名とパスワードまたは証明書) と考えてください。Think of it as a "user identity" (username and password or certificate) with a specific role, and tightly controlled permissions. 一般的なユーザー ID とは異なり、セキュリティ プリンシパルで行うタスクは制限する必要があります。A security principal should only need to do specific things, unlike a general user identity. 管理タスクを実行するために必要な最小限のアクセス許可レベルのみを付与すれば、セキュリティは向上します。It improves security if you grant it only the minimum permission level that it needs to perform its management tasks. アプリケーションまたはサービスと共に使用されるセキュリティ プリンシパルは、特に サービス プリンシパル と呼ばれています。A security principal used with an application or service is specifically called a service principal.

  • Azure Active Directory (Azure AD):Azure AD は、テナント向けの Active Directory サービスです。Azure Active Directory (Azure AD): Azure AD is the Active Directory service for a tenant. 各ディレクトリには、1 つまたは複数のドメインが存在します。Each directory has one or more domains. ディレクトリには複数のサブスクリプションを関連付けることができますが、テナントは 1 つだけです。A directory can have many subscriptions associated with it, but only one tenant.

  • Azure テナント ID :テナント ID は、Azure サブスクリプション内で Azure AD インスタンスを識別するための独自の方法です。Azure tenant ID : A tenant ID is a unique way to identify an Azure AD instance within an Azure subscription.

  • マネージド ID :Azure Key Vault は、資格情報およびその他のキーやシークレットを安全に保管する方法を提供しますが、コードは Key Vault に認証してそれらを取得する必要があります。Managed identities : Azure Key Vault provides a way to securely store credentials and other keys and secrets, but your code needs to authenticate to Key Vault to retrieve them. マネージド ID を使用すると、Azure AD で自動的に管理される ID が Azure サービスに提供されるため、この問題の解決が簡単になります。Using a managed identity makes solving this problem simpler by giving Azure services an automatically managed identity in Azure AD. この ID を使用すると、コードに資格情報が含まれていなくても、Key Vault または Azure AD 認証をサポートする任意のサービスの認証を受けることができます。You can use this identity to authenticate to Key Vault or any service that supports Azure AD authentication, without having any credentials in your code. 詳細については、下の画像と Azure リソースのマネージド ID の概要に関するページを参照してください。For more information, see the following image and the overview of managed identities for Azure resources.

    Azure リソースのマネージド ID の動作を表す図

認証Authentication

Key Vault で操作を行うには、まず、それを認証する必要があります。To do any operations with Key Vault, you first need to authenticate to it. 次の 3 つの方法で Key Vault を認証します。There are three ways to authenticate to Key Vault:

  • Azure リソースのマネージド ID:Azure の仮想マシンにアプリをデプロイするときに、Key Vault にアクセスできる仮想マシンに ID を割り当てることができます。Managed identities for Azure resources: When you deploy an app on a virtual machine in Azure, you can assign an identity to your virtual machine that has access to Key Vault. 他の Azure リソースにも ID を割り当てることができます。You can also assign identities to other Azure resources. この手法の利点は、最初のシークレットのローテーションがアプリやサービスで管理されないことにあります。The benefit of this approach is that the app or service isn't managing the rotation of the first secret. Azure では、ID が自動的にローテーションされます。Azure automatically rotates the identity. ベスト プラクティスとして、この手法をお勧めします。We recommend this approach as a best practice.
  • サービス プリンシパルと証明書 :サービス プリンシパルと、Key Vault にアクセスできる関連証明書を使用することができます。Service principal and certificate : You can use a service principal and an associated certificate that has access to Key Vault. アプリケーションの所有者または開発者が証明書をローテーションする必要があるため、この手法はお勧めできません。We don't recommend this approach because the application owner or developer must rotate the certificate.
  • サービス プリンシパルとシークレット: サービス プリンシパルとシークレットを使用して Key Vault に対する認証を行うことはできますが、これはお勧めできません。Service principal and secret : Although you can use a service principal and a secret to authenticate to Key Vault, we don't recommend it. Key Vault に対する認証で使用されるブートストラップ シークレットを自動的にローテーションするのは困難です。It's hard to automatically rotate the bootstrap secret that's used to authenticate to Key Vault.

Key Vault の役割Key Vault roles

次の表を使用して、Key Vault が開発者やセキュリティ管理者のニーズを満たすのに役立つ方法を十分に理解します。Use the following table to better understand how Key Vault can help to meet the needs of developers and security administrators.

RoleRole 問題の説明Problem statement Azure Key Vault による解決Solved by Azure Key Vault
Azure アプリケーションの開発者Developer for an Azure application "キーを使って署名と暗号化を行う Azure 用のアプリケーションを作成したい。"I want to write an application for Azure that uses keys for signing and encryption. しかし、ソリューションが地理的に分散したアプリケーションに合うように、これらのキーをアプリケーションの外部に設定したい。But I want these keys to be external from my application so that the solution is suitable for an application that's geographically distributed.

これらのキーとシークレットは、自分でコードを記述せずに保護したい。I want these keys and secrets to be protected, without having to write the code myself. さらに、アプリケーションから最適なパフォーマンスで簡単に使用できるようにしたい。"I also want these keys and secrets to be easy for me to use from my applications, with optimal performance."
√ キーは、資格情報コンテナーに格納され、必要に応じて、URI によって呼び出されます。√ Keys are stored in a vault and invoked by URI when needed.

√ キーは、業界標準のアルゴリズム、キーの長さ、ハードウェア セキュリティ モジュールを使用して、Azure によってセキュリティで保護されています。√ Keys are safeguarded by Azure, using industry-standard algorithms, key lengths, and hardware security modules.

√ キーは、アプリケーションと同じ Azure データセンターに存在する HSM で処理されます。√ Keys are processed in HSMs that reside in the same Azure datacenters as the applications. この方法では、オンプレミスなどの別の場所に存在するキーより、信頼性が向上し、待機時間が削減されます。This method provides better reliability and reduced latency than keys that reside in a separate location, such as on-premises.
サービスとしてのソフトウェア (SaaS) の開発者Developer for software as a service (SaaS) "お客様のテナント キーやシークレットに対して義務や潜在的責任を負いたくない。"I don't want the responsibility or potential liability for my customers' tenant keys and secrets.

お客様がキーを自分で所有して管理すれば、自分はコア ソフトウェア機能を提供することに集中してベストを尽くすことができる。"I want customers to own and manage their keys so that I can concentrate on doing what I do best, which is providing the core software features."
√ 顧客は Azure に自分のキーをインポートして管理できます。√ Customers can import their own keys into Azure, and manage them. SaaS アプリケーションで顧客のキーを使用して暗号化操作を実行する必要がある場合は、アプリケーションに代わって、Key Vault によりこれらの操作が行われます。When a SaaS application needs to perform cryptographic operations by using customers' keys, Key Vault does these operations on behalf of the application. アプリケーションからは顧客のキーが見えません。The application does not see the customers' keys.
最高セキュリティ責任者 (CSO)Chief security officer (CSO) "アプリケーションが、セキュリティで保護されたキー管理のために FIPS 140-2 レベル 2 または FIPS 140-2 レベル 3 HSM に準拠していることを確認したい。"I want to know that our applications comply with FIPS 140-2 Level 2 or FIPS 140-2 Level 3 HSMs for secure key management.

組織が、キーのライフサイクルを管理し、キーの使用状況を確実に監視できるようにしたい。I want to make sure that my organization is in control of the key lifecycle and can monitor key usage.

複数の Azure サービスとリソースを使用しているが、Azure の 1 つの場所からキーを管理したい。"And although we use multiple Azure services and resources, I want to manage the keys from a single location in Azure."
√ FIPS 140-2 レベル 2 への準拠が検証済みの HSM に ボールト を選択します。√ Choose vaults for FIPS 140-2 Level 2 validated HSMs.
√ FIPS 140-2 レベル 3 への準拠が検証済みの HSM に Managed HSM プール を選択します。√ Choose managed HSM pools for FIPS 140-2 Level 3 validated HSMs.

√ Key Vault は、マイクロソフトがキーを確認または抽出しないように作られています。√ Key Vault is designed so that Microsoft does not see or extract your keys.
√ キーの使用状況は、ほぼリアルタイムで記録されます。√ Key usage is logged in near real time.

√ コンテナーは、Azure にあるコンテナーの数、サポートするリージョン、使用するアプリケーションに関係なく、1 つのインターフェイスを提供します。√ The vault provides a single interface, regardless of how many vaults you have in Azure, which regions they support, and which applications use them.

Azure サブスクリプションを持つユーザーはだれでも、Key Vault を作成して使用できます。Anybody with an Azure subscription can create and use key vaults. Key Vault は開発者とセキュリティ管理者にとってメリットがありますが、他の Azure サービスを管理する組織の管理者がこれを実装して管理することができます。Although Key Vault benefits developers and security administrators, it can be implemented and managed by an organization's administrator who manages other Azure services. たとえば、この管理者は Azure サブスクリプションを使用してサインインし、キーの格納先に組織用のコンテナーを作成し、次のような運用タスクを担当できます。For example, this administrator can sign in with an Azure subscription, create a vault for the organization in which to store keys, and then be responsible for operational tasks like these:

  • キーやシークレットの作成やインポートCreate or import a key or secret
  • キーやシークレットの取り消しや削除Revoke or delete a key or secret
  • ユーザーまたはアプリケーションに Key Vault へのアクセスを許可します。結果、ユーザーまたはアプリケーションはそのキーおよびシークレットを管理または使用できるようになります。Authorize users or applications to access the key vault, so they can then manage or use its keys and secrets
  • キーの使用状況の構成 (署名や暗号化など)Configure key usage (for example, sign or encrypt)
  • キーの使用状況の監視Monitor key usage

その後、この管理者は開発者に、アプリケーションから呼び出す URI を提供します。This administrator then gives developers URIs to call from their applications. また、この管理者は、セキュリティ管理者にキーの使用状況のログ情報を提供します。This administrator also gives key usage logging information to the security administrator.

Azure Key Vault の動作の概要

開発者は、API を使用してキーを直接管理することもできます。Developers can also manage the keys directly, by using APIs. 詳細については、「 Azure Key Vault 開発者ガイド」を参照してください。For more information, see the Key Vault developer's guide.

次のステップNext steps

Azure Key Vault は、ほとんどのリージョンで使用できます。Azure Key Vault is available in most regions. 詳細については、 Key Vault の価格のページを参照してください。For more information, see the Key Vault pricing page.