Closed2
awsクレデンシャル周りの設定メモ
このスクラップで書くこと
- 想定している環境(AWS アカウントとスイッチロールの構成、ツール)
- 想定している運用
- 設定例
想定している環境
AWSアカウントとスイッチロール
アカウント名 | プロファイル名 | AWSアカウントID | IAMユーザー or Assume Role元 |
---|---|---|---|
親アカウント | parent | 11111 | IAMユーザー |
本番環境 | prod | 22222 | parentからassume role |
開発環境 | stg | 33333 | parentからassume role |
ツール
- aws-vault
- 1Password
- awscli
- その他aws関連のツール
- packer
- boto3などのaws sdk
- git-remote-codecommit
運用
- デフォルトアカウントのクレデンシャルの管理
- IAMユーザーのユーザー名/パスワードは1Passwordで管理する
- アクセスキーはaws-vaultで管理する
- OTPは1Passwordで管理する
- CLIから使用するAWS関連のツールは
aws-vault exec <profile>
で実行する (git-remote-codecommit以外)- CLI操作時にはOTPはopおよびotcで取得する
- マネジメントコンソールへのログインは
aws-vault login <profile>
で行う
設定
aws-vaultへクレデンシャルを保存する
parentのIAMユーザーのクレデンシャルを保存する。
参考: https://dev.classmethod.jp/articles/aws-vault/
~/.aws/config
~/.aws/config
[default]
region=ap-northeast-1
[profile parent]
[profile common]
source_profile=parent
region=ap-northeast-1
mfa_serial=arn:aws:iam::11111:mfa/parent-iam-user
output=json
[profile prod]
include_profile=common # commonプロファイルの設定を引き継ぎ
role_arn=arn:aws:iam::22222:role/prod-role
[profile dev]
include_profile=common # commonプロファイルの設定を引き継ぎ
role_arn=arn:aws:iam::33333:role/dev-role
[profile prod-codecommit]
# codecommit用のプロファイル
# credential_processを使っているのはgit-remote-codecommitが環境変数からクレデンシャルをロードしないから
include_profile=prod
role_session_name=codecommit
credential_process = aws-vault exec prod --json --prompt osascript
codecommit
以下、git-remote-codecommitは導入済みとして...
.git/configは以下のようになる
.git/config
# codecommit for prod repository
[remote "prod"]
url = codecommit://prod-codecommit@app-repo
OTPの取得とキャッシュ
opまたはopcを使う
https://dev.classmethod.jp/articles/cache-op-token-with-opc/
opでタッチID認証を使ってOTPの取得ができる
このスクラップは2021/10/01にクローズされました