動作環境
OS | Parott OS |
バージョン | 5.3 Electro Ara |
仮想化ソフト | Oracle VM VirtualBox |
前提条件
AWS CLIをインストールしていること。
IAMで多要素認証(MFA)の設定
IAMに移動してユーザーのセキュリティ認証情報を選択
MFAデバイスの割り当て
デバイス名を入力、MFAデバイスを選択。任意ですが今回はスマートフォンを選択。
QRコードを表示してスマートフォンで読み取る。スマートフォンに表示されたMFAコードを入力。
MFAデバイスの割り当て完了。識別子はAWS CLI認証情報の設定で使用します。
IAMポリシー作成
MFAルールを作成していきます。「MFA認証していない時拒否する」というルールが必要。
AWS re: POSTを参考にしました。※AWS が管理する Q&A サービス
ポリシーの作成
ActionとResourceは全てを指定にしていますが、要件によって変更する。
aws:MultiFactorAuthPresentキーが含まれていない場合、拒否する。
ポリシーエディタ
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Deny",
"Action": [
"*"
],
"Resource": [
"*"
],
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
]
}
JSON → ポリシーエディタを記述する。
ポリシーの名前を入力して作成する。※名前は任意
後はIAMグループに作成したIAMポリシーをアタッチしてIAMユーザをIAMグループに追加すれば適用されます。
AWS CLI
AWS CLIコマンドを実行してGetSessionTokenAPIでIAMユーザーの一時的な認証情報を取得します。
MFAを利用したAWS CLIでのアクセス認証の設定
GetSessionTokenのoptionについて
–duration-secondsで秒数を指定 21600で6時間、認証可能
–serial-number MFAデバイス割り当ての識別子
–token-code スマートフォンに表示された6桁のコードを記入
一時的な認証情報を取得するために以下のコマンドを実行
aws sts get-session-token --duration-seconds 21600 --serial-number arn:aws:iam::xxxxxxxxxxxx:mfa/ユーザ名 --token-code xxxxxx
以下の認証情報を取得できます。
MFAユーザーのプロファイルを作成する。※mfa-userにしていますが、任意の名前でOK
aws configure --profile mfa-user
認証情報の設定ファイルの階層に移動
cd ~/.aws
認証情報の設定ファイルを開く
vi credentials
認証情報の設定ファイルに取得した一時的な認証情報を追記する。
[mfa-user]
aws_access_key_id = xxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxx
aws_session_token = xxxxxxxxxxxxxxxxxx
AWS CLIでコマンドが実行可能となります。※S3を許可している場合の例
認証情報の有効期限が切れた場合は以下のエラーが出力される。