Ashwin が AWS CLI を
使用してアクセスを
認証する方法を説明します

authenticate-mfa-cli-ashwin

AWS コマンドラインインターフェイス (AWS CLI) 経由で AWS リソースへのアクセスを認証するには、どのように MFA トークンを使用したらよいですか?

アカウントとそのリソースを多要素認証 (MFA) デバイスで保護することはベストプラクティスです。MFA デバイスを使用しながら AWS CLI を使用してリソースとやりとりをしたい場合は、一時的なセッショントークンを作成する必要があります。MFA ハードウェアデバイスを使用している場合、ARN の値は GAHT12345678 のようになります。仮想 MFA を使用している場合、値は arn:aws:iam::123456789012:mfa/user のようになります。詳細については、「MFA ステータスのチェック」を参照してください。

最新バージョンの AWS CLI をインストールして設定した後、AWS CLI コマンドの sts get-session-token を実行します。変数はお客様のアカウント、リソース、および 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"
    ;}
}

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

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

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

Linux の場合:

$ export AWS_ACCESS_KEY_ID=<Access-Key-as-in-Previous-Output>
$ export AWS_SECRET_ACCESS_KEY=<Secret-Access-Key-as-in-Previous-Output>
$ export AWS_SESSION_TOKEN=<Session-Token-as-in-Previous-Output>

Windows の場合:

> set AWS_ACCESS_KEY_ID=<Access-Key-as-in-Previous-Output>
> set AWS_SECRET_ACCESS_KEY=<Secret-Access-Key-as-in-Previous-Output>
> set AWS_SESSION_TOKEN=<Session-Token-as-in-Previous-Output>

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

> unset AWS_ACCESS_KEY_ID
> unset AWS_SECRET_ACCESS_KEY
> unset AWS_SESSION_TOKEN

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

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

[mfa]
output = json
region = us-east-1
aws_access_key_id = <Access-key-as-in-returned-output>
aws_secret_access_key = <Secret-access-key-as-in-returned-output>
aws_session_token = <Session-Token-as-in-returned-output>

認証情報の有効期限が切れたら、get-session-token コマンドを再実行して、返された値を環境変数またはプロファイル設定にエクスポートします。バックグラウンドで有効期限切れをチェックし、再認証を促すようなスクリプトや cron ジョブを実行することを検討してください。

AWS CLI を aws configure コマンドを使用して設定すると、IAM ユーザーの永続的な認証情報を使用するデフォルト設定が、MFA 認証を必要としないコマンドに使用されます。

設定例:

.aws/credentials

[default]
aws_access_key_id = <Access-Key-for-an-IAM-User>
aws_secret_access_key = <Secret-Access-Key-for-IAM-User>

注意: AWS CLI でプロファイルを使用してコマンドを認証する場合は、呼び出しが MFA で認証されるように --profile オプションに続けてプロファイル名を指定します。

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

$ aws s3 ls

API コールを行うときに必ず正しい認証情報が使用されるように、認証情報の優先順位を理解することが重要です。

$ aws s3 ls --profile mfa

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


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2017 年 1 月 10 日

更新日: 2018 年 08 月 17 日