一時認証情報の発行
はじめに
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時間を指定できますので、目的に合わせて変更してください。