AWS Secrets Managerインポート
AWS Secrets ManagerからKeeperボルトへシークレットをインポート
aws-secrets-import コマンドは、AWS Secrets Manager内のすべてのシークレットを読み取り、指定した共有フォルダにKeeperレコードとして取り込みます。各シークレット名がレコードのタイトルとなり、シークレットの値はレコード上の名前付きフィールドに解析されます。
エイリアス:
amsi要件:
boto3、pip install keepercommander[aws]でインストール必須の権限:
"secretsmanager:ListSecrets", "secretsmanager:GetSecretValue"
認証
AWS認証情報は以下の順序で解決されます。
本番環境では、認証情報フラグを省略し、インスタンスロールまたは ~/.aws の構成に任せることが多いです。
基本的な使い方
aws-secrets-import <folder-uid> [options]必須引数は共有フォルダUIDのみです。インポート先となるKeeper共有フォルダの一意識別子です。コマンダー内で list-sf を実行するとフォルダのUIDを確認できます。
引数とフラグ
位置引数
folder
必須。 シークレットのインポート先となる共有フォルダUID。
認証情報フラグ
--region REGION
AWSリージョン名 (例: us-east-1)。boto3のデフォルトリージョンが利用できない場合は必須。
--access-key KEY
AWSアクセスキーID。boto3認証情報チェーンより優先。
--secret-key SECRET
AWSシークレットアクセスキー。--access-key 指定時は必須。
動作フラグ
--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,...]
指定したキー/値のタグをすべて持つシークレットのみインポート。
シークレットのフィルタリング
フィルタを使うと、残りのシークレットに触れずに対象のサブセットだけをインポートできます。指定した各フィルタに一致する必要があります。
名前フィルタ
名前フィルタは、AWSに保存されているシークレット名全体に対して適用されます。
複数の名前フィルタを組み合わせることもできます。それぞれが追加の条件になります。
タグフィルタ
--tags フラグは、カンマ区切りの KEY=VALUE ペアのリストを受け取ります。指定したタグをすべて、かつ与えた値と完全一致で持つシークレットのみが対象になります。
タグのキーと値は大文字と小文字を区別し、AWSに保存されている値と完全一致する必要があります。Azure Key Vault でも tags という用語を使い、GCP Secret Manager では labels という用語を使いますが、--tags フラグの使い方は3つのプロバイダーで同じです。
フィルタの組み合わせ
すべてのフィルタ種別を1つのコマンドで併用できます。
リストしたすべてのフィルタを満たすシークレットのみがインポートされます。
シークレット値の形式
同じ解析ルールは、3つのクラウドインポートコマンド (aws-secrets-import、azure-secrets-import、gcp-secrets-import) で共通に使用されます。
AWS Secrets Manager からシークレットを取得すると、その SecretString は以下のルールに従い、優先順位の高い順に名前付きフィールド値へ解析されます。
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件作成されます。
タイトル — 元のAWSシークレット名 (例:
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 など) が複数ある場合、最初の出現が型付きフィールドのスロットを占め、以降はカスタムフィールドに保存されます。
例
環境のAWS認証情報ですべてのシークレットをインポート
~/.aws の認証情報、またはアタッチされたEC2/ECSインスタンスロールを自動的に使用します。
認証情報とリージョンを明示的に指定
インポート対象のプレビュー (ドライラン)
すべてのフィルタを通過するシークレット名を表示し、レコードは作成しません。
paymentsチームが所有する本番シークレットのみインポート
既知の単一シークレットをインポート
ステージングのRDSシークレットをすべて serverCredentials レコードとしてインポート
複雑なフィルタをコミット前にドライラン
最終更新

