MFA トークンを使用して、AWS CLI を通じて AWS リソースへのアクセスを認証するにはどうすればよいですか?

所要時間2分
0

MFA トークンを使用して、AWS コマンドラインインターフェイス (AWS CLI) で AWS リソースへのアクセスを認証したいと考えています。

解決方法

Multi-Factor Authentication (MFA) デバイスを使用して、アカウントとそのリソースを保護することをお勧めします。MFA デバイスの使用時に AWS CLI を使用してリソースとやり取りする場合は、一時セッションを作成する必要があります。MFA ハードウェアデバイスを使用している場合、値は GAHT12345678 のような値となります。仮想 MFA を使用している場合は、セキュリティ認証情報を表示して値を確認できます。arn:aws:iam::123456789012:mfa/user に似ています。詳細については、MFA ステータスのチェックを参照してください。

重要:

sts get-session-token AWS CLI コマンドを実行し、次のように変数をアカウント、リソース、MFA デバイスからの情報に置き換えます。

$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

次のような一時的な認証情報と有効期限 (デフォルトでは 12 時間) を含む出力を受け取ります。

{
    "Credentials": {
        "SecretAccessKey": "secret-access-key",
        "SessionToken": "temporary-session-token",
        "Expiration": "expiration-date-time",
        "AccessKeyId": "access-key-id"
    }
}

注意: sts get-session-token コマンドの --duration-seconds オプションを使用して、有効期間 (秒単位) を指定できます。値の範囲は 900 秒 (15 分) から 129600 秒 (36 時間) です。root ユーザー認証情報を使用している場合、範囲は 900 秒 (15 分) から 3600 秒 (1 時間) です。

環境変数で一時的な認証情報を使用する

これらのコマンドを使用して値を環境変数にエクスポートすることにより、一時的な認証情報を使用できます。

Linux:

export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

Windows:

set AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
set AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
set AWS_SESSION_TOKEN=example-session-Token-as-in-previous-output

環境変数を設定する場合は、これらのコマンドを使用して get-session-token 呼び出しを再度行う前に、必ずその設定を解除してください。

Linux:

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN

Windows:

set AWS_ACCESS_KEY_ID=
set AWS_SECRET_ACCESS_KEY=
set AWS_SESSION_TOKEN=

名前付きプロファイルで一時的な認証情報を使用する

名前付きプロファイルを使用して、MFA 認証を必要とするコマンドを指定することもできます。そのためには、ユーザーのホームディレクトリの .awsフォルダにある認証情報ファイルを編集し、MFA で認証されたコマンドを発行するための新しいプロファイル設定を追加します。プロファイル設定の例は次のとおりです。

[mfa]
aws_access_key_id = example-access-key-as-in-returned-output
aws_secret_access_key = example-secret-access-key-as-in-returned-output
aws_session_token = example-session-Token-as-in-returned-output

認証情報の有効期限が切れたら、get-session-token コマンドを再度実行し、返された値を環境変数またはプロファイル設定にエクスポートします。

ヒント: get-session-token コマンドの出力から「有効期限切れ」をチェックし、再認証を促すスクリプトまたは cron ジョブをバックグラウンドで実行することをご検討ください。

configure コマンドを使用して AWS CLI が設定されている場合、永続的な AWS Identity and Access Management (IAM) ユーザー認証情報を持つデフォルト設定があります。この IAM ユーザーは、MFA 認証を必要としないコマンドを使用できます。

設定の例:

.aws/credentials

[default]
aws_access_key_id = example-access-Key-for-an-IAM-user
aws_secret_access_key = example-secret-access-key-for-IAM-user

注意: 永続的な IAM 認証情報で mfa_serial パラメータを使用することはできません。

AWS CLI を使用してコマンドを認証するためにプロファイルを使用する場合は、--profile オプションにプロファイル名を続けて指定し、呼び出しがMFA を使用して認証されていることを確認します。

たとえば、このコマンドはデフォルトのプロファイル認証情報を使用し、MFA では認証されません。

$ aws s3 ls

重要: API 呼び出しを行うときに正しい認証情報が使用されていることを確認できるように、認証情報の優先順位を頭に入れておいてください。これは GetCallerIdentity コマンドを使用して実行できます。 

$ aws s3 ls --profile mfa

IAM ポリシーの aws:MultiFactorAuthPresent または aws:MultiFactorAuthAge 条件を使用して、ユーザーに MFA を使用して特定の API アクション実行を認証するよう要求することもできます。


関連情報

AWS でのユーザーの MFA デバイスの有効化

Lost or unusable multi-factor authentication (MFA) device (多要素認証 (MFA) デバイスの紛失または使用不可)

コメントはありません

関連するコンテンツ