Closed2

awsクレデンシャル周りの設定メモ

kazup0nkazup0n

このスクラップで書くこと

  • 想定している環境(AWS アカウントとスイッチロールの構成、ツール)
  • 想定している運用
  • 設定例

想定している環境

AWSアカウントとスイッチロール

アカウント名 プロファイル名 AWSアカウントID IAMユーザー or Assume Role元
親アカウント parent 11111 IAMユーザー
本番環境 prod 22222 parentからassume role
開発環境 stg 33333 parentからassume role

ツール

運用

  • デフォルトアカウントのクレデンシャルの管理
    • IAMユーザーのユーザー名/パスワードは1Passwordで管理する
    • アクセスキーはaws-vaultで管理する
    • OTPは1Passwordで管理する
  • CLIから使用するAWS関連のツールはaws-vault exec <profile> で実行する (git-remote-codecommit以外)
    • CLI操作時にはOTPはopおよびotcで取得する
  • マネジメントコンソールへのログインはaws-vault login <profile> で行う
kazup0nkazup0n

設定

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の取得ができる
https://dev.classmethod.jp/articles/touch-id-auth-available-in-opv2/

このスクラップは2021/10/01にクローズされました