Azure Key Vaultシークレットインポート
Azure Key VaultからKeeperボルトへシークレットをインポート
azure-secrets-import コマンドは、Azure Key Vault内の有効なシークレットをすべて読み取り、指定した共有フォルダにKeeperレコードとして取り込みます。各シークレット名がレコードのタイトルとなり、シークレットの値はレコード上の名前付きフィールドに解析されます。
エイリアス:
azsi要件:
azure-keyvault-secretsおよびazure-identityインストール:pip install keepercommander[azure]個別インストール:pip install azure-identityおよびpip install azure-keyvault-secrets必須の権限:
モデル必要な権限Access Policy (従来型)
シークレットに対する
List+GetAzure RBAC
Key Vault Secrets Userロール (シークレットに対するGet+Listを付与)RBACでは、一覧取得に
Microsoft.KeyVault/vaults/secrets/readMetadata/action、値の読み取りにMicrosoft.KeyVault/vaults/secrets/getSecret/actionが用いられます。
認証
DefaultAzureCredential
明示的なフラグがない場合は、Azure SDKの DefaultAzureCredential チェーンが使用され、以下の順序で確認されます。
環境変数 (
AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRETなど)ワークロードID (Kubernetes)
実行中のAzure VM、App Service、コンテナにアタッチされたマネージドID
Azure CLI (
az login)Azure PowerShell
Azure Developer CLI
本番環境では、認証情報フラグを省略し、マネージドIDまたはAzure CLIに任せることが多いです。
基本的な使い方
azure-secrets-import <vault-name> <folder-uid> [options]2つの位置引数が必須です。
vault-name— Azure Key Vaultの短い名前 (例:my-vault)。https://<vault-name>.vault.azure.net/という完全なVault URLが自動的に構築されます。folder-uid— インポート先となるKeeper共有フォルダの一意識別子。コマンダー内でlist-sfを実行すると確認できます。
引数とフラグ
位置引数
vault_name
必須。 Azure Key Vaultの短い名前 (例: my-vault)。
folder
必須。 シークレットのインポート先となる共有フォルダUID。
認証情報フラグ
--tenant-id ID
Azure ADテナントID。--client-id および --client-secret とセットで必須。
--client-id ID
Azure ADアプリケーション (クライアント) ID。--tenant-id および --client-secret とセットで必須。
--client-secret SECRET
Azure ADクライアントシークレット。--tenant-id および --client-id とセットで必須。
サービスプリンシパル認証では、3つの認証情報フラグをすべて指定する必要があります。3つとも省略すると DefaultAzureCredential が使用されます。
動作フラグ
--record-type TYPE
インポートするレコードのKeeperレコードタイプ。既定値は login。
--dry-run
レコードを作成せず、インポート対象のシークレットを一覧表示。
フィルタフラグ
すべてのフィルタフラグは任意で、AND条件で組み合わされます。指定したすべてのフィルタを満たすシークレットのみがインポートされます。
--name NAME
この名前と完全一致するシークレットのみインポート。
--name-starts-with PREFIX
名前が PREFIX で始まるシークレットのみインポート。
--name-ends-with SUFFIX
名前が SUFFIX で終わるシークレットのみインポート。
--name-contains SUBSTRING
名前に SUBSTRING を含むシークレットのみインポート。
--tags KEY=VALUE[,KEY=VALUE,...]
指定したキー/値のタグをすべて持つシークレットのみインポート。
シークレットのフィルタリング
フィルタを使うと、残りのシークレットに触れずに対象のサブセットだけをインポートできます。指定した各フィルタに一致する必要があります。
無効なシークレットは、フィルタ設定にかかわらず常にスキップされます。
名前フィルタ
名前フィルタは、Azure Key Vaultに保存されているシークレット名に対して適用されます。
複数の名前フィルタを組み合わせることもできます。それぞれが追加の条件になります。
タグフィルタ
Azure Key Vaultのシークレットには任意のキー/値タグを付与できます。--tags フラグは、カンマ区切りの KEY=VALUE ペアのリストを受け取ります。指定したタグをすべて、かつ与えた値と完全一致で持つシークレットのみが対象になります。
タグのキーと値は大文字と小文字を区別し、Azureに保存されている値と完全一致する必要があります。
フィルタの組み合わせ
すべてのフィルタ種別を1つのコマンドで併用できます。
リストしたすべてのフィルタを満たすシークレットのみがインポートされます。
シークレット値の形式
Azure Key Vaultからシークレットを取得すると、その値は以下のルールに従い、優先順位の高い順に名前付きフィールド値へ解析されます。
1. JSONオブジェクト
シークレット値が { で始まり、オブジェクトを表す有効なJSONである場合、オブジェクト内の各キー/値ペアがKeeperレコード上の個別フィールドになります。
username、password、host の3フィールドになります。
2. KEY=VALUE行 (シェル形式)
シークレット値がJSONでない場合、改行区切りの KEY=VALUE ペア (.env ファイルと同じ形式) として解析を試みます。# で始まる行と空行は無視されます。
username、password、host の3フィールドになります。
3. 代替 — プレーン文字列
JSONでも KEY=VALUE 行でも解析できない場合、文字列全体が value という名前の単一フィールドに保存されます。
value = s3cur3P@ss! の1フィールドになります。
Keeperレコードの構造
インポートされた各シークレットは、対象の共有フォルダにTypedRecordが1件作成されます。
タイトル — 元のAzure Key Vaultシークレット名 (例:
prod-database-primary)レコードタイプ —
--record-typeで制御 (既定値:login)
フィールドの配置
シークレットから解析したキー/値ペアは、レコードに配置する前にKeeperフィールドタイプへマッピングされます。
username, user, login
login
型付きフィールド
password, pass, secret, secret_value
password
型付きフィールド
url, endpoint, host
url
型付きフィールド
email, mail
email
型付きフィールド
note, notes
—
レコードのNotesセクション
上記以外
text
型付きフィールド
note および notes キーは、型付きフィールドやカスタムフィールドではなく、レコードのNotesフィールドに書き込まれます。上記以外のキーは text 型付きフィールドとして保存されます。同じ意味のタイプ (login、password、url、email など) が複数ある場合、最初の出現が型付きフィールドのスロットを占め、以降はカスタムフィールドに保存されます。
例
DefaultAzureCredentialですべてのシークレットをインポート
マネージドID、Azure CLIログイン、または環境変数を自動的に使用します。
サービスプリンシパルで認証
インポート対象のプレビュー (ドライラン)
すべてのフィルタを通過するシークレット名を表示し、レコードは作成しません。
paymentsチームが所有する本番シークレットのみインポート
既知の単一シークレットをインポート
ステージングのデータベースシークレットを serverCredentials レコードとしてインポート
複雑なフィルタをコミット前にドライラン
別テナントのVaultをサービスプリンシパル認証でインポート
最終更新

