[Azure]キーコンテナー (Azure Key Vault)
Key Vaultはアプリケーションやサービス内で使用する各種キー、パスワードなどの機密情報を安全に管理するための金庫のような役割を持つ。
例としてデータベース接続パスワードなどのような外部に漏洩したときに高いリスクを持つものを、Key Vaultで保管すると、高いセキュリティで保護され、アクセスを許可されたアプリケーションから必要な時に取得することができる。
価格プラン (SKU) と提供する機能
Key VaultはStandardとPremiumの2つの価格プランで提供される。PremiumはStandardの機能に加え、HSM (Hardware Security Module) を使用したキーの管理をサポートする。
KeyVaultで提供する機能は以下の通り
- シークレット管理
- キー管理
- 証明書の管理
- HSMを利用したキーの格納
Key Vaultでのデータ保管
キー管理
データの暗号化に使用する暗号化キーの作成と管理を行う。以下2種類のキーの作成を行う。
- ソフトキー
キーコンテナーによってアプリケーションから使用されるキー - ハードキー
HSMによってハードウェアから使用されるキー
キーの確認
生成したキーはAzure Portal、Power Shell、az-cliで確認できる。
確認方法 | 詳細 |
---|---|
Azure Portal | Azure KeyVault > [対象のキーコンテナー] > Keys |
Azure Power Shell | Get-AzKeyVaultKeyコマンドレット |
az-cli | az keyvault key show |
az-cliの例: $ az keyvault key show \ --name {キー名} \ --vault-name {キーコンテナー名} { "attributes": { "created": "2023-01-01T08:00:00+00:00", "enabled": true, "expires": null, "exportable": null, "notBefore": null, "recoverableDays": 90, "recoveryLevel": "Recoverable", "updated": "2023-01-01T08:00:00+00:00" }, "key": { "crv": null, "d": null, "dp": null, "dq": null, "e": "AQAB", "k": null, "keyOps": [ "encrypt", "decrypt", "sign", "verify", "wrapKey", "unwrapKey" ], "kid": "https://{{キーコンテナー名}}.vault.azure.net/keys/{キー名}/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "kty": "RSA", "n": "dGVzdDIwMjMxMTIyCg==", "p": null, "q": null, "qi": null, "t": null, "x": null, "y": null }, "managed": null, "releasePolicy": null, "tags": null }
enabled | 有効フラグ(True:有効、False:無効) |
---|---|
expires | 有効期限 |
notBefore | 使用可能になる日時 |
recoveryLevel | リカバリーレベル(削除時の挙動)
|
recoverableDays | 論理削除した場合の保持期間(日数) |
カスタマーマネージドキー
暗号化を行う際の暗号化キーは、Microsoftが提供するマネージドキーを使うか、ユーザー側が自らキーを管理するカスタマーマネージドキーを使うか選択することができる。カスタマーマネージドキーは以下のサービスでサポートされている(一例)。
- Azure Disk Encryption
仮想マシンのディスク暗号化 - Always Encrypted
SQL Serverの列の暗号化 - Storage Service Encryption
ストレージアカウントの暗号化(BlobストレージとAzure Filesのみサポート)
シークレット管理
シークレットは、DB接続パスワードや、APIにアクセスするためのアプリケーションキーなどの主にアプリケーションから参照される機密情報を管理するために使用する。キー管理と同様に使用可能になる日時や有効期限を設定・管理できる。
シークレットの確認
生成したシークレットはAzure Portal、Power Shell、az-cliで確認できる。
確認方法 | 詳細 |
---|---|
Azure Portal | Azure KeyVault > [対象のキーコンテナー] > Secrets |
Azure Power Shell | Get-AzKeyVaultSecretコマンドレット |
az-cli | az keyvault secret show |
az-cliの例: $ az keyvault secret show \ --name {キー名} \ --vault-name {キーコンテナー名} { "attributes": { "created": "2021-12-01T00:00:00+00:00", "enabled": true, "expires": null, "notBefore": null, "recoverableDays": 90, "recoveryLevel": "Recoverable", "updated": "2021-12-01T00:00:00+00:00" }, "contentType": null, "id": "https://{キーコンテナー名}.vault.azure.net/secrets/{キー名}/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "kid": null, "managed": null, "name": "APP-KEY-WAPP-CONS", "tags": {}, "value": "{値}" }
証明書の管理
Key Vaultを利用して、証明書を作成またはインポートして管理することができる。Key Vaultを利用して証明書を作成すると、秘密鍵はKey Vault内に作成され、証明書の所有者に公開されることはない。
アクセス制御
Key Vaultは管理プレーンとデータプレーンの2層に分かれている。アクセス制御は各層ごとに行う。
Azure Key Vaultへのアクセス
管理プレーン
管理プレーンではKeyVault自体の管理、主に以下作業を行う。
- キーコンテナーの作成
- アクセスポリシーの変更
データプレーン
データプレーンではKey Vaultに保管されたデータの操作を行う。
- キーの管理
- シークレットの管理
- 証明書の管理
KeyVaultの安全性と回復機能
論理削除
キーコンテナー内のオブジェクト(キー、シークレット、証明書)は、論理削除が有効な場合、設定された保持期間の間は回復することができる。設定値のデフォルトは論理削除が有効で、完全削除までの日数は論理削除から90日となっている。
バックアップ
キーコンテナー内のオブジェクトをバックアップすることができる。それぞれのキーコンテナーのメニューからバックアップを行うが、この操作にはバックアップ権限が必要になる。
バックアップオブジェクトは暗号化されたBlobデータとして、ストレージアカウント内に保存される。Azureの外部でこのデータをの暗号化を解除することはできない。また、復元するには 同じサブスクリプション+同じリージョン のキーコンテナーに復元する必要がある。
コメント
コメントを投稿