【AWS】MFA(多要素)認証を突破してCodeCommitからgit cloneする


環境


手順

AWSへのアクセスにMFAが必須である環境においてCodeCommitよりリポジトリをcloneする手順です。
調べても「CodeCommitでMFA不要にする手順」ばかり出てきて手間取ったので、メモを残します。

AWS CLIのインストール

もしAWS CLIが未インストールである場合は以下ページ参考にインストールします。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

aws-mfaのインストール

コマンドラインでAWS操作する際にMFA認証を楽にするツールがあります。
https://github.com/broamski/aws-mfa

こちらをpipでインストールします。

$ pip install aws-mfa

AWS認証情報の確認

AWSのマネジメントコンソールにログイン後、ヘッダー右端にあるアカウント名をクリックすると「セキュリテイ認証情報」というメニューが表示されるので選択します。
そこでアカウントの詳細が表示されるので「ユーザーのARN」を控えておきます。

また、もし自分のAWS アクセスキーを発行していない場合はここで発行します。
少し下へスクロールすると「アクセスキーを作成」というボタンがあるのでそこからアクセスキーが発行できます。

AWS CLI向けアクセスキー設定

AWS CLIにprofileを指定してアクセスキーを紐づけます。

『hoge』というプロファイル名で登録したい場合
『hoge』だけではなく『hoge-long-term』というプロファイルも登録します。

まず『hoge-long-term』の登録をします。

$ aws configure --profile hoge-long-term
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX      (発行したアクセスキー)
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXX  (発行したアクセスキーに紐づくシークレット)
Default region name [None]: ap-northeast-1          (利用するリージョン 任意)
Default output format [None]: json                  (利用するフォーマット 任意)

次に『hoge』の登録をします。

$ aws configure --profile hoge
AWS Access Key ID [None]:                   (空のまま)
AWS Secret Access Key [None]:               (空のまま)
Default region name [None]: ap-northeast-1  (利用するリージョン 任意)
Default output format [None]: json          (利用するフォーマット 任意)

MFA認証登録

以下のコマンドでMFA認証を通します。
コマンド実行後にMFA code(数字6桁)を聞かれるので入力します。

$ aws-mfa --profile 『作成したプロファイル』 --device 『事前に確認したユーザーのARN』
# 例:aws-mfa --profile hoge --device arn:aws:iam::000000000000:mfa/hoge-taro

これでしばらくMFA認証をしなくてもコマンドを打てるようになりました。
有効期限は~/.aws/credentialsを見ると確認できます。

git clone実行

以下のようにprofileを指定して実行することでcloneができます。

$ git clone codecommit::『リージョン』://『作成したプロファイル』@『cloneしたいリポジトリ』
# 例:git clone codecommit::ap-northeast-1://hoge@my-application-repository

参考