目的
備忘録。
IAMロールで CodeCommit へアクセスする方法を共有し、それによるアクセス権限の制御(および場合によっては CodeCommit のコストダウン)を実現する。
背景
以前には Git 認証情報を使ったアクセスをしていましたが、ローテーションやPC移行等でいちいち Git 認証を発行して管理するのが面倒になりました。できればIAMロールでどうにかできないかと調べたときのメモです。
またWindowsの資格マネージャに認証情報が残らないのもいいですね。
やり方
やり方は非常に簡単で、GRCのセットアップをした後にIAMロールの設定をしたプロファイルを指定するだけです。
ちなみにプロファイルにIAMロールを設定できるのは GRC の機能ではなく AWSCLI の機能です。
またIAMロールを使っているため当然ですがクロスアカウントアクセスも可能です。
設定
[hoge]
aws_access_key_id = dummy
aws_secret_access_key = dummy
[profile codecommit]
role_arn = ${IAM_ROLE_ARN}
source_profile = hoge
role_session_name = ${USER_NAME}
使い方
REGION と PROFILE_NAME は省略可能です。
git clone codecommit::${REGION}://${PROFILE_NAME}@${REPOSITORY_NAME}
git clone codecommit::ap-northeast-1://codecommit@fuga_repo
注意点
このやり方は次のような場合には向きません。(多くのケースでは問題ないとは思います)
- アクセスするAWSアカウントが非常に多く、またリポジトリ名が重複している
- 別の開発チームのリポジトリを利用、かつ submodule にしている
- サブモジュールへのアクセスは登録されているURLで行われます
- サブモジュールが CodeCommit の Git 認証の場合にはその対応が必要です
所感
Git認証情報を管理しなくてよくなるのは気分的に楽です。
あとIAMユーザーを利用して管理コンソールからCodeCommitを操作しない場合にはIAMロールの料金だけになります。AWS Organizations では5ユーザーの無料枠は実質ないので、今回の方法でCodeCommitの固定料金を少しだけ削減することが可能です。
参考