目次
- はじめに
- 対象
- 使用したIAMポリシー
- 設定手順
- 終わりに
はじめに
MFA必須のIAMユーザーを作成し、CLIを有効化することになりました。
MFAデバイスの設定は今までGUIで実施していたのですが、せっかくなので全てコマンドで実施してみました。
対象
・AWSリソースに対して、基本的な知識をお持ちの方(特にIAM)
・Windows11 ProでのCLIでのMFAデバイス設定方法に興味がある方
・アクセスキーの作成の解説が不要な方
使用したIAMポリシー
以下ポリシーはMFAが無効の場合、大半のアクションを拒否するポリシーです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowIndividualUserToManageTheirOwnMFA",
"Effect": "Allow",
"Action": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice",
"iam:DeactivateMFADevice",
"iam:EnableMFADevice",
"iam:ResyncMFADevice",
"iam:ListMFADevices"
],
"Resource": [
"arn:aws:iam::*:mfa/${aws:username}",
"arn:aws:iam::*:user/${aws:username}"
]
},
{
"Sid": "AllowIndividualUserToViewTheirOwnMFA",
"Effect": "Allow",
"Action": [
"iam:ListVirtualMFADevices",
"iam:GetUser"
],
"Resource": [
"arn:aws:iam::*:user/${aws:username}",
"*"
]
},
{
"Sid": "BlockMostAccessUnlessSignedInWithMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice",
"iam:DeactivateMFADevice",
"iam:EnableMFADevice",
"iam:ResyncMFADevice",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:GetUser",
"iam:ChangePassword"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
]
}
設定手順
以下概要です。
※IAMユーザーは作成済のものとします。
- AWS CLIのインストール
- 接続情報の設定
- MFAデバイスの作成
- MFAデバイス有効化
- 一時的認証情報の取得しログイン
AWS CLIのインストール
※管理者権限が必要になります。
以下よりインストーラをダウンロードし、インストールを実行する
https://awscli.amazonaws.com/AWSCLIV2.msi
インストーラー実行後、以下コマンドでインストールの確認をする
aws --version
公式サイト:https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
接続情報の設定
以下コマンドをPowershellで実行する
aws configure --profile <任意のプロファイル名>
※プロファイル名を設定することによって、アクセス先(prod/stgなど)を判別します。
※対話形式で設定が進みますので作成済のより共有されたAccess key IDとSecret access keyをご入力ください
AWS Access Key ID [None]: Access key ID
AWS Secret Access Key [None]: Secret access key
Default region name [None]: <デフォルトリージョン>
Default output format [None]: 未入力
※未入力の場合JSONになります
デフォルトでは”C:\Users\user.aws”に「credentials」というファイルが作成されます。
接続情報の設定が正常に完了していれば、以下のような状態になります
「credentials」の中身は以下のようになります。
[<設定したProfile名>]
aws_access_key_id = <入力したaccess_key>
aws_secret_access_key = <入力したsecret_access_key>
通常のCLIのセットアップはこれで完了ですが、MFAが有効になっていないと何もできないので、
MFAデバイスの設定をしていきます。
MFAデバイスの作成
Powershellで以下コマンドを実行する
※QRコードを保存する場所によっては管理者権限が必要です
aws iam create-virtual-mfa-device --virtual-mfa-device-name <MFAデバイス名> --outfile C:/QRCode.png --bootstrap-method QRCodePNG --profile <設定したProfle名>
MFAデバイスでスキャンするQRコードを「QRCode.png」という名前で作成するコマンドです。
以下が期待される出力です。
{
"VirtualMFADevice": {
"SerialNumber": "arn:aws:iam::<アカウント>:mfa/<MFAデバイス名>"
}
}
※上記arnは今後使用しますので、メモ帳などにお控えください。
※手元のMFAデバイスで「QRCode.png」をスキャン後、設定の必要がありますが、ここでは説明を省略します。
MFAデバイス有効化
Powershellで以下コマンドを実行する
aws iam enable-mfa-device --user-name <IAMユーザー名> --serial-number <取得したarn> --authentication-code1 <MFAデバイスに表示される6桁の数字> --authentication-code2 <MFAデバイスに表示される6桁の数字> --profile <設定したProfle名>
※2つ目のMFAコードが表示されるまで、お手元のMFAデバイスで少々時間がかかります。
一時的認証情報の取得しログイン
Powershellで以下コマンドを実行し、一時認証情報を取得する
aws sts get-session-token --serial-number <取得したarn> --token-code <MFAデバイスに表示される6桁コード> --duration-seconds 43200 --profile <設定したProfle名>
以下が期待される出力です
{
"Credentials": {
"AccessKeyId": "*****",
"SecretAccessKey": "*****",
"SessionToken": "*****",
"Expiration": "*****"
}
}
「C:\Users\user.aws\credentials」を以下のように編集し、一時認証情報を設定する。
<設定したProfle名>
aws_access_key_id = <手順8で取得したAccessKeyId>
aws_secret_access_key = <手順8で取得したSecretAccessKey>
aws_session_token = <手順8で取得したSessionToken>
セットアップ手順は以上になります。
後は通常のCLIコマンドのようにコマンド –profile でAWSリソースの操作が可能です。
例 aws lambda list-functions --profile
終わりに
以上です。
今は手動で認証情報を入力していますが、実務ではスクリプト化などして、自動化できると使い勝手がよいかと思います。
機会があれば、そのへんも記事にしていきたいです。