次の方法で共有


Azure CLI を使用して Key Vault を管理する

この記事では、Azure CLI を使用して Azure Key Vault の使用を開始する方法について説明します。 次の情報を確認できます。

  • Azure で強化されたコンテナー (ボールト) を作成する方法
  • キー コンテナーにキー、シークレット、または証明書を追加する
  • Microsoft Entra ID を使用してアプリケーションを登録する
  • キーまたはシークレットを使用するアプリケーションの承認
  • キー コンテナーの高度なアクセス ポリシーを設定する
  • ハードウェア セキュリティ モジュール (HSM) の操作
  • キーボールトとその関連キーおよびシークレットの削除
  • その他の Azure クロスプラットフォーム コマンド ライン インターフェイス コマンド

Azure Key Vault は、ほとんどのリージョンで使用できます。 詳細については、 Key Vault の価格のページを参照してください。

この記事では、いずれかの手順に含まれる Azure アプリケーションを記述する方法については説明しません。この手順では、キー コンテナー内のキーまたはシークレットを使用するアプリケーションを承認する方法を示します。

Azure Key Vault の概要については、「 Azure Key Vault とは」を参照してください。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

前提条件

この記事にある Azure CLI コマンドを使用するには、以下を用意する必要があります。

  • Microsoft Azure サブスクリプション。 サブスクリプションがない場合は、無料試用版にサインアップできます。
  • Azure CLI バージョン 2.0 以降。 最新バージョンをインストールするには、「 Azure CLI のインストール」を参照してください。
  • この記事で作成したキーまたはパスワードを使用するように構成されるアプリケーション。 サンプル アプリケーションは、 Microsoft ダウンロード センターから入手できます。 手順については、付属の Readme ファイルを参照してください。

Azure クロスプラットフォーム Command-Line インターフェイスに関するヘルプの取得

この記事では、コマンド ライン インターフェイス (Bash、ターミナル、コマンド プロンプト) について理解していることを前提としています。

--help または -h パラメーターを使用して、特定のコマンドのヘルプを表示できます。 または、Azure ヘルプ [コマンド] [オプション] 形式も使用できます。 コマンドで必要なパラメーターが不明な場合は、ヘルプを参照してください。 たとえば、次のコマンドはすべて同じ情報を返します。

az account set --help
az account set -h

次の記事を読んで、Azure クロスプラットフォーム Command-Line インターフェイスの Azure Resource Manager について理解することもできます。

Azure で強化されたコンテナー (ボールト) を作成する方法

ボールトはハードウェア セキュリティ モジュールによってサポートされるセキュリティで保護されたコンテナーです。 コンテナーでは、アプリケーション シークレットを一元的に保管することで、セキュリティ情報が過って失われる可能性は低くなります。 また、Key Vault は、それらに格納されているすべてのものへのアクセスを制御し、ログに記録します。 Azure Key Vault では、トランスポート層セキュリティ (TLS) 証明書の要求と更新を処理でき、堅牢な証明書ライフサイクル管理ソリューションに必要な機能が提供されます。 次の手順で、資格情報コンテナーを作成します。

サブスクリプションへの接続

対話形式でサインインするには、次のコマンドを使用します。

az login

組織のアカウントを使用してサインインするには、ユーザー名とパスワードを渡します。

az login -u username@___domain.com -p password

複数のサブスクリプションがあり、使用するサブスクリプションを指定する必要がある場合は、次のように入力してアカウントのサブスクリプションを表示します。

az account list

サブスクリプション パラメーターを使用してサブスクリプションを指定します。

az account set --subscription <subscription name or ID>

Azure クロスプラットフォーム Command-Line インターフェイスの構成の詳細については、「 Azure CLI のインストール」を参照してください。

新しいリソース グループを作成する

Azure Resource Manager を使用すると、関連するすべてのリソースがリソース グループ内に作成されます。 既存のリソース グループにキー ボールトを作成できます。 新しいリソース グループを使用する場合は、新しいリソース グループを作成できます。

az group create -n "ContosoResourceGroup" -l "East Asia"

最初のパラメーターはリソース グループ名で、2 番目のパラメーターは場所です。 使用可能なすべての場所の一覧を取得するには、次のように入力します。

az account list-locations

Key Vault リソース プロバイダーを登録する

新しいキー コンテナーを作成しようとすると、"サブスクリプションは名前空間 'Microsoft.KeyVault' を使用するように登録されていません" というエラーが表示されることがあります。 そのメッセージが表示された場合は、Key Vault リソース プロバイダーがサブスクリプションに登録されていることを確認します。 これは、サブスクリプションごとに 1 回限り行われる操作です。

az provider register -n Microsoft.KeyVault

キー保管庫を作成する

az keyvault create コマンドを使用してキー ボールトを作成します。 このスクリプトには、リソース グループ名、キー コンテナー名、地理的な場所という 3 つの必須パラメーターがあります。

ContosoKeyVault という名前の新しいコンテナーを作成するには、東アジアの場所にあるリソース グループ ContosoResourceGroup に次のように入力します。

az keyvault create --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --___location "East Asia"

このコマンドの出力には、作成したキー コンテナーのプロパティが表示されます。 最も重要な 2 つのプロパティは、次のとおりです。

  • name: この例では、名前は ContosoKeyVault です。 この名前は、他の Key Vault コマンドに使用します。
  • vaultUri: この例では、URI は https://contosokeyvault.vault.azure.net。 REST API を使用してボールトを利用するアプリケーションは、この URI を使用する必要があります。

これで、このキー コンテナーに対して操作を実行する権限が Azure アカウントに付与されました。 現時点では、誰も許可されていません。

キー コンテナーにキー、シークレット、または証明書を追加する

Azure Key Vault でソフトウェアで保護されたキーを作成する場合は、 az key create コマンドを使用します。

az keyvault key create --vault-name "ContosoKeyVault" --name "ContosoFirstKey" --protection software

.pem ファイルに既存のキーがある場合は、Azure Key Vault にアップロードできます。 キーをソフトウェアまたは HSM で保護することを選択できます。 次の使用例は、.pem ファイルからキーをインポートし、パスワード "hVFkk965BuUv" を使用してソフトウェアで保護します。

az keyvault key import --vault-name "ContosoKeyVault" --name "ContosoFirstKey" --pem-file "./softkey.pem" --pem-password "hVFkk965BuUv" --protection software

これで、その URI を使用して、Azure Key Vault に作成またはアップロードしたキーを参照できるようになりました。 https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKeyを使用して、常に現在のバージョンを取得します。 この特定のバージョンを取得するには、 https://<keyvault-name>.vault.azure.net/keys/<keyname>/<key-unique-id> を使用します。 たとえば、https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey/cgacf4f763ar42ffb0a1gca546aygd87 のようにします。

資格情報コンテナーにシークレットを追加します (SQLPassword という名前のパスワードで、Azure Key Vault に "hVFkk965BuUv" の値を設定)。

az keyvault secret set --vault-name "ContosoKeyVault" --name "SQLPassword" --value "hVFkk965BuUv "

URI を使用して、このパスワードを参照します。 https://ContosoVault.vault.azure.net/secrets/SQLPasswordを使用して常に現在のバージョンを取得し、https://<keyvault-name>.vault.azure.net/secret/<secret-name>/<secret-unique-id>してこの特定のバージョンを取得します。 たとえば、https://ContosoVault.vault.azure.net/secrets/SQLPassword/90018dbb96a84117a0d2847ef8e7189d のようにします。

.pem または .pfx を使用して証明書をコンテナーにインポートします。

az keyvault certificate import --vault-name "ContosoKeyVault" --file "c:\cert\cert.pfx" --name "ContosoCert" --password "hVFkk965BuUv"

作成したキー、シークレット、または証明書を表示してみましょう。

  • キーを表示するには、次のように入力します。
az keyvault key list --vault-name "ContosoKeyVault"
  • シークレットを表示するには、次のように入力します。
az keyvault secret list --vault-name "ContosoKeyVault"
  • 証明書を表示するには、次のように入力します。
az keyvault certificate list --vault-name "ContosoKeyVault"

Microsoft Entra ID を使用してアプリケーションを登録する

通常、この手順は開発者が別のコンピューターで実行します。 これは Azure Key Vault に固有のものではなく、認識のためにここに含まれています。 アプリの登録を完了するには、アカウント、コンテナー、アプリケーションが同じ Azure ディレクトリに存在する必要があります。

キー コンテナーを使用するアプリケーションは、Microsoft Entra ID のトークンを使用して認証する必要があります。 アプリケーションの所有者は、最初に Microsoft Entra に登録する必要があります。 登録の終了時に、アプリケーション所有者は次の値を取得します。

  • アプリケーション ID (Microsoft Entra クライアント ID または appID とも呼ばれます)
  • 認証キー (共有シークレットとも呼ばれます)。

トークンを取得するには、アプリケーションでこれらの値の両方を Microsoft Entra ID に提示する必要があります。 トークンを取得するようにアプリケーションを構成する方法は、アプリケーションによって異なります。 Key Vault サンプル アプリケーションの場合、アプリケーション所有者はこれらの値を app.config ファイルに設定します。

Microsoft Entra ID を使用してアプリケーションを登録する詳細な手順については、「 アプリケーションと Microsoft Entra ID の統合」というタイトルの記事を参照してください。 ポータルを使用して、リソースにアクセスできる Microsoft Entra アプリケーションとサービス プリンシパルを作成し、 Azure CLI を使用して Azure サービス プリンシパルを作成します。

Microsoft Entra ID でアプリケーションを登録するには:

az ad sp create-for-rbac -n "MyApp" --password "hVFkk965BuUv" --role Contributor --scopes /subscriptions/<subscription id>
# If you don't specify a password, one will be created for you.

キーまたはシークレットを使用するアプリケーションの承認

コンテナー内のキーまたはシークレットにアクセスするアプリケーションを承認するには、 az keyvault set-policy コマンドを使用します。

たとえば、コンテナー名が ContosoKeyVault で、コンテナー内のキーで暗号化を解除して署名するアプリケーションを承認する場合は、アプリケーション ID で次のコマンドを使用します。

az keyvault set-policy --name "ContosoKeyVault" --spn {application-id} --key-permissions decrypt sign

コンテナー内のシークレットを読み取るために同じアプリケーションを承認するには、次のコマンドを入力します。

az keyvault set-policy --name "ContosoKeyVault" --spn {application-id} --secret-permissions get

キー コンテナーの高度なアクセス ポリシーを設定する

az keyvault update を使用して、Key Vault の高度なポリシーを有効にします。

デプロイのために Key Vault を有効にする: 仮想マシンがシークレットとして格納されている証明書をコンテナーから取得できるようにします。

az keyvault update --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --enabled-for-deployment "true"

ディスク暗号化で Key Vault を有効にする: Azure Disk 暗号化にコンテナーを使用する場合は必須。

az keyvault update --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --enabled-for-disk-encryption "true"

テンプレートのデプロイで Key Vault を有効にする: Resource Manager がコンテナーからシークレットを取得できるようにします。

az keyvault update --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --enabled-for-template-deployment "true"

ハードウェア セキュリティ モジュール (HSM) の操作

保証を強化するために、HSM の境界を離れないハードウェア セキュリティ モジュール (HSM) からキーをインポートまたは生成できます。 HSM は FIPS 140 検証済みです。 この要件が適用されない場合は、このセクションをスキップし、「キー コンテナーと関連付けられているキーとシークレットを削除する」に進んでください。

これらの HSM で保護されたキーを作成するには、HSM で保護されたキーをサポートするコンテナー サブスクリプションが必要です。

keyvault を作成するときに、'sku' パラメーターを追加します。

az keyvault create --name "ContosoKeyVaultHSM" --resource-group "ContosoResourceGroup" --___location "East Asia" --sku "Premium"

ソフトウェアで保護されたキー (前述のように) と HSM で保護されたキーをこのコンテナーに追加できます。 HSM で保護されたキーを作成するには、Destination パラメーターを 'HSM' に設定します。

az keyvault key create --vault-name "ContosoKeyVaultHSM" --name "ContosoFirstHSMKey" --protection "hsm"

次のコマンドを使用して、コンピューター上の .pem ファイルからキーをインポートできます。 このコマンドは、Key Vault サービスの HSM にキーをインポートします。

az keyvault key import --vault-name "ContosoKeyVaultHSM" --name "ContosoFirstHSMKey" --pem-file "/.softkey.pem" --protection "hsm" --pem-password "PaSSWORD"

次のコマンドは、"Bring Your Own Key" (BYOK) パッケージをインポートします。 これにより、キーをローカル HSM で生成し、キーを HSM 境界から離れることなく、Key Vault サービスの HSM に転送できます。

az keyvault key import --vault-name "ContosoKeyVaultHSM" --name "ContosoFirstHSMKey" --byok-file "./ITByok.byok" --protection "hsm"

この BYOK パッケージを生成する方法の詳細については、「 Azure Key Vault で HSM-Protected キーを使用する方法」を参照してください。

キーボールトとその関連キーおよびシークレットの削除

キー コンテナーとそのキーまたはシークレットが不要になった場合は、 az keyvault delete コマンドを使用してキー コンテナーを削除できます。

az keyvault delete --name "ContosoKeyVault"

または、キー コンテナーとそのグループに含まれているその他のリソースを含む Azure リソース グループ全体を削除できます。

az group delete --name "ContosoResourceGroup"

その他の Azure クロスプラットフォーム コマンド ライン インターフェイス コマンド

Azure Key Vault の管理に役立つ可能性があるその他のコマンド。

このコマンドは、すべてのキーと選択したプロパティの表形式の表示を一覧表示します。

az keyvault key list --vault-name "ContosoKeyVault"

このコマンドは、指定したキーのプロパティの完全な一覧を表示します。

az keyvault key show --vault-name "ContosoKeyVault" --name "ContosoFirstKey"

このコマンドは、すべてのシークレット名と選択したプロパティの表形式の表示を一覧表示します。

az keyvault secret list --vault-name "ContosoKeyVault"

特定のキーを削除する方法の例を次に示します。

az keyvault key delete --vault-name "ContosoKeyVault" --name "ContosoFirstKey"

特定のシークレットを削除する方法の例を次に示します。

az keyvault secret delete --vault-name "ContosoKeyVault" --name "SQLPassword"

次のステップ