🗂

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