ローカルの AWS のアクセスキーを自動的にローテーションする

f:id:kizashi1122:20210315143238p:plain

id:kizashi1122 です。

最初に発行したAWS のアクセスキーをそのままずっと使ってませんか?

docs.aws.amazon.com

そもそもできるならばキーは発行すべきではありませんが、発行することが必要なシチュエーションもありますよね。 上記記事にも、

  • アクセスキーを定期的に更新します

と、あるようにキーは漏洩したときのリスクを減らすためにも更新したほうがいいです。

f:id:kizashi1122:20210315134357p:plain:w200

こうならないようにしたいですね。

これ、実はアクセスキーを自動的にローテションする仕組みがあるんです。

手順

手順は以下の通りです。 .aws/credentials がすでにある前提です。

  • 当該 IAM ユーザに自身のキーを作成・削除する権限を与える
  • aws-rotate-iam-keys をインストールする
  • 依存コマンドである aws コマンドをインストールする
  • 依存コマンドである jq コマンドをインストールする

1つずつ見ていきましょう。

IAM ユーザの権限追加

以下のポリシーが追加されていればいいです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListAccessKeys",
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey"
            ],
            "Resource": [
                "arn:aws:iam::*:user/${aws:username}"
            ]
        }
    ]
}

aws-rotate-iam-keys インストール

 $ git clone https://github.com/rhyeal/aws-rotate-iam-keys.git
 $ sudo cp aws-rotate-iam-keys/src/bin/aws-rotate-iam-keys /usr/local/bin/
 $ rm -rf aws-rotate-iam-keys

こんな感じで PATH の通ったところにおいてもらえたらいいです。

aws コマンドインストール

 $  curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
 $  unzip awscli-bundle.zip
 $  sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

jq コマンドインストール

$ sudo yum install jq

yum でインストールできます(環境によっては他の方法でインストールしてください)

以上!

実行

超簡単です。

$ aws-rotate-iam-keys

だけ。プロファイルを切ってる場合は、

$ aws-rotate-iam-keys -p other_profile

と指定することができます。

あとはこれを crontab に入れるなり、.bashrc に追加するなりすれば自動化できます。

f:id:kizashi1122:20210315141736p:plain:w200

緑が気持ちいいです! インゲージの開発メンバーは皆この仕組みを導入しています。

実は・・・

今回の話は、2020年2月の JAWSUG で ABEJA の村主さんが発表されたこちらのスライドに書いている内容そのまんまです。

speakerdeck.com

他にもお役立ち情報が沢山載っているので必見です。

インゲージではエンジニアを募集しています! 興味ある方は こちら まで!