今回はDjangoではなく、AWSがテーマです。
IAMユーザーでCredential情報を管理するにはどうしたらいいでしょうか?
CSVファイルをダウンロードして独自に管理するのは手間がかかるし、もしダウンロードしっぱなしにしてCSVファイルの存在を忘れた頃にPCがハッキングされる。なんてことがあったらたまりませんよね。
そこで、今回は__aws-vault__を使って管理しやすい環境を作っていこうと思います。
aws-vaultとは?
aws-vaultは、AmazonのSTS(Security Token Service)APIを使った、Credentialsの管理ソフトウェアです。
AWSユーザー認証にこのTokenを使うことで、認証に__最大12時間の有効期限__をつけることができ、セキュリティが高まるというメリットがあります。また、CSVファイルなどを管理する手間も省けます。
aws-vaultをインストールする
MacOSでHomebrewを使っている方は、
$ brew install --cask aws-vault
その他の方は、公式のgithub aws-vaultをご覧ください。
Access Keyをaws-vaultに保管する
以下の操作はCLIで行います。
add
コマンドで、aws-vaultにIAMユーザーを登録します。
$ aws-vault add ここにiamのusernameなどを記入
そうすると、Access Keyを聞かれるので、IAMのコンソールから保存したいAccess KeyのIDをコピーしてペーストします。
ちなみに初めて使う場合は、その前にaws-vault自体のパスワードを設定する画面が出るはずです。
Enter Access Key ID: ここにペースト
その後、実際のSecret Access Keyを聞かれるので、IAMコンソールでshowを押してコピペして、ペーストします。
Enter Access Key: ここにペースト
以上でadd
は完了です!
MFAなどの設定
add
コマンドによって、~/.aws/configファイルに[profile 入力したusername]のセクションが生成されています。ここにIAMユーザーのデフォルトの設定を記入することができます。
[profile username]
region=ap-northeast-1
mfa_serial=arn:aws:iam::0123456789:mfa/iam.username
のように編集して、デフォルトのリージョンを設定したり、MFAのarnコードを保存しましょう。
細かい設定などは、github aws-vault Usageを確認してください。
実際にaws-vaultを使って認証用Tokenを生成する
exec
コマンドを使って、一時的な認証を行います。このコマンドによって、terminalのセッションに、aws-vaultが生成したCredentialが保存されます。
$ aws-vault exec taichi.masuyama --duration=2h
--duration オプションをつけて認証情報の有効期限を設定できます。最大で12時間(12h)です。
MFAを設定した方は、MFAのコードが要求されるので、AuthyなどのMFAを設定したデバイスでコードを確認して入力してください。
Enter token for arn:aws:iam::0123456789:mfa/iam.username: ここにコードを入力
これで、環境変数に認証に必要な変数がセットされています。export -p
などで確認してみてください。
また、
$ aws-vault list
で現在セッションに存在するユーザーや、残り時間を確認することができます。
終わりに
IAMのAccess KeyをCSVファイルで管理するのにはリスクもコストも伴います。aws-vaultはそれを簡単に解決してくれました。
参考