見出し画像

一時認証情報の発行


はじめに

AWS CDKの勉強を始めるにあたって、一時認証情報の発行を行なったので、整理していきます。
具体的には、MFA認証必須のIAMユーザを作成して、そのユーザを通して一時認証情報を作成します。

MFA認証必須のIAMユーザの作成

MFA認証必須とするIAMポリシーを作成します。
ポリシー名は任意ですがここでは「AllDenyWithoutMFAPolicy」とします。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllDenyWithoutMFA",
            "Effect": "Deny",
            "Action": [
                "*"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": false
                }
            }
        }
    ]
}

次にIAMユーザを以下の内容で作成します。

  • ユーザ名:任意 ※ここでは「cdkUser」とします

  • AWS マネジメントコンソールへのユーザーアクセスを提供する - オプション:チェックなし

  • 許可のオプション:ポリシーを直接アタッチする

  • 許可ポリシー:AdministratorAccessとAllDenyWithoutMFAPolicy ※ここでは練習なのでAdministratorAccessを付与していますが実際は必要なものに限ってください

ユーザが作成できたら、MFA デバイスの割り当てとアクセスキーの発行まで行ないます。

AWS CLI とCDK の環境構築

AWS CLIとASWS CDKの2つをインストールします。
CLIはサイトからzipをダウンロードしてインストールするので、unzipが必要です。未インストールの場合は以下を行なってください。

sudo apt install unzip

AWSからCLIをダウンロードして、解凍・インストールします。

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

AWS CDK 環境構築

こちらはnpmからインストールが可能です。
node.jsが必要ですので、未実施であれば事前にインストールをしてください。

npm install -g aws-cdk

AWS CLI認証プロファイル設定

CLIを使って一時認証情報を払い出すために、cdkUserのプロファイルを登録します。プロファイル名は任意ですがここでは「cdkUser」に合わせます。
また設定内容はcdkUserのアクセスキーとシークレットキーを設定し、regionはap-northeast-1、outputはjsonにします。

aws configure --profile cdkUser

正しく設定できているかの確認は以下コマンドを実行します。
ここでUserId、Account、Arnを含むjsonが返ってくればOKです。

aws sts get-caller-identity --profile cdkUser

一時認証情報払い出し

下準備ができたので、一時認証情報をcdkUserを使って払い出します。

aws sts get-session-token \
--serial-number <MFAデバイスのARN> \
--token-code <MFAデバイスに表示される6桁番号> \
--profile cdkUser

払い出しが成功すると下記のように新しいアクセスキー・シークレットキー、そしてセッショントークンが返却されます。

{
    "Credentials": {
        "AccessKeyId": "ASIAXXXXXXXXXXXXXXXX",
        "SecretAccessKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "SessionToken": "XXXX以降省略",
        "Expiration": "2024-10-20T13:34:53+00:00"
    }
}

上記の情報を新しいプロファイルとして、.aws/credentials、.aws/configに対し、すでに設定されているcdkUserの後ろに追記します。
このプロファイル名もは任意ですがここでは「cdkTmpUser」とします。

.aws/credentials

[cdkTmpUser]
aws_access_key_id = ASIAXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
aws_session_token = XXXX以降省略

.aws/config

[profile cdkTmpUser]
region = ap-northeast-1
output = json

cdkTmpUserが正しくアクセスできるか以下のコマンドで確認します。

aws sts get-caller-identity --profile cdkTmpUser

まとめ

払い出された一時認証情報をプロファイルに設定したので以後CLIからの操作はcdkTmpUserを使って行なうことができます。
なお一時認証情報の有効期間はデフォルトで12時間で、最小15分~最大36時間を指定できますので、目的に合わせて変更してください。

いいなと思ったら応援しよう!