CodeCommitをIAM Identity Center(SSO)で認証してGit操作する【git-remote-codecommit】
CodeCommit を IAM Identity Center の認証で使おうとしたとき、検索しても「正しいやり方」がまとまっていないことが多いです。
いざ調べて見ると、やれIAMアクセスキーを発行だの、Git Credential Managerを編集するだのメンドウな設定ばかりです。
実際にはgit-remote-codecommit(GRC)を使えば、SSOプロファイルだけで安全にGit操作できます。
本記事では、GRC × IAM Identity CenterでCodeCommitを扱う方法を説明します。
TL;DR
- GRC用のURLに、IAM Identity Centerのプロファイル名を指定する
- 事前に
aws sso login --profile <profile>を実行しておく - リモートリポジトリに設定する
$ git remote add origin codecommit::ap-northeast-1://my-dev-profile@example-repo
これで、通常のGitと同じ操作が可能となります。
解説
プロファイルを使用した認証に関しては、公式ドキュメントに記載があります。
git-remote-codecommit AWS CodeCommit を使用した への HTTPS 接続のセットアップ手順
CodeCommitProfile という名前のプロファイルを使用して同じリポジトリのクローンを作成するには、次の手順を実行します。
$ git clone codecommit://CodeCommitProfile@MyDemoRepo my-demo-repo
手順
IAM Identity Centerのプロファイルを作成する
$ aws configure sso
SSO session name (Recommended): ...
SSO start URL [None]: ...
SSO region [None]: ...
SSO registration scopes [sso:account:access]: ...
で認証情報を作ります。
以下、公式ドキュメントに従ってください。
AWS CLI を使用した IAM アイデンティティセンター認証の設定
認証できたかテストをします。
※ --profileに設定する値は、↑ のコマンドで指定したプロファイルを使用してください。
$ aws s3 ls --profile my-dev-profile
...S3Bucketが表示される(権限があれば)
エラーが出なければ OK。
git-remote-codecommitをインストール
AWSが提供する、CodeCommitリポジトリにアクセス可能なコマンドラインツールであるgit-remote-codecommitをインストールする。
$ pip install git-remote-codecommit
// もしくは
$ pip3 install git-remote-codecommit
GRC用のCodeCommit URLを設定する
CodeCommitのGRC対応のリポジトリURL(HTTPS)を修正する形で以下の形式を設定する。
$ git clone codecommit::ap-northeast-1://my-dev-profile@example-repo
// もしくは
$ git remote add origin codecommit::ap-northeast-1://my-dev-profile@example-repo
Gitを実行する前にSSOログインする
AWS CLIの認証情報を利用するため、必ず事前にSSOログインを行う。
aws sso login --profile my-dev-profile
ログイン後は通常通りGit操作できる。
おわりに
CodeCommitを使用する度に、毎回検索をしているような気もするので、まとめました。
SSOの持つ一時的な認証情報で操作をするのは、セキュリティ的にも安全で推奨されるものだと思いますので、使って行きましょう。
皆さまのお役にたてれば幸いです。
Discussion