AWSにおけるMFA設定とCLI制御の実践ガイド
はじめに
AWSセキュリティ成熟度モデルでは、MFA (Multi-Factor Authentication) の活用がQuick Winsの一つとして推奨されている。以下、CLIにおけるMFAの設定方法とその具体的な効果について解説する。
公式ドキュメント: AWS Security Maturity Model
MFAの設定方法
コンソールでのMFA設定
- AWSコンソールにログインし、IAMサービスに移動
- 対象ユーザーを選択し、MFAデバイスを設定
MFAコード入力の例
設定した後、以下のように、コンソール画面からログイン時にMFAコードの入力が必要になる。
CLIでの操作が制限されない
MFA設定しただけで、AWS CLIを利用した操作は制限されない。このため、ポリシーを追加してCLI操作を制限する必要がある。
ポリシーによるCLI操作の制限
制限ポリシーの例
以下のポリシーをIAMユーザーやロールに追加することで、MFA認証なしの操作を制限可能である。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BlockAccessWhenNoSignedInWithMFA",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
]
}
適用後、MFA未認証のCLI操作は拒否される。
MFA有効時のCLI操作方法
MFAを有効化した状態でAWS CLIを利用するには、以下の手順を実施する。
1. MFAデバイス識別子の取得
IAM画面でMFAデバイスの識別子 (ARN形式) を確認する。
2. セッショントークンの取得
以下のコマンドを実行して一時的な認証情報を取得する。
aws sts get-session-token --serial-number <MFAデバイス識別子> --token-code <MFAコード>
レスポンス:
- AccessKeyId
- SecretAccessKey
- SessionToken
3. 環境変数の設定(Windows Command Prompt)
取得した情報を以下の環境変数に設定する。
set AWS_ACCESS_KEY_ID=<AccessKeyId>
set AWS_SECRET_ACCESS_KEY=<SecretAccessKey>
set AWS_SESSION_TOKEN=<SessionToken>
設定後、AWS CLIで操作可能となる。
例外コマンド(一部)
MFAが有効な状態でも、以下のコマンドがMFAコードなしで利用可能である。
-
sts get-caller-identity
: 現在の認証情報の確認 -
sts get-session-token
: セッショントークンの取得(上記説明した通り)