このハンズオンについて
この手順は、JAWS-UG CLI専門支部 #58 KMS入門で実施したものです。
前提条件
必要な権限
作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。
- KMSに対するフルコントロール権限
- S3に関するフルコントロール権限
- STSに関するフルコントロール権限
- IAMに関するフルコントロール権限
0. 準備
0.1. リージョンを指定
コマンド
export AWS_DEFAULT_REGION='ap-northeast-1'
0.2. 資格情報を確認
コマンド
aws configure list
インスタンスプロファイルを設定したEC2インスタンスでアクセスキーを設定せずに実行した場合、以下のようになります。
結果
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************RDPA iam-role
secret_key ****************9GA8 iam-role
region ap-northeast-1 env AWS_DEFAULT_REGION
0.3. バージョン確認
コマンド
aws --version
結果
aws-cli/1.10.56 Python/2.7.10 Linux/4.4.15-25.57.amzn1.x86_64 botocore/1.4.46
0.4. バージョンアップ(必要に応じて)
コマンド
sudo pip install -U awscli
0.5. 変数の設定
コマンド
ADMIN_NAME='jawsug-cli-admin'
ALIAS="alias/cli-handson0815"
KEY_ID=$(aws kms list-aliases \
--query "Aliases[?AliasName == \`${ALIAS}\`].TargetKeyId" \
--output text) \
&& echo ${KEY_ID}
1. 管理者情報の認証情報取得
管理者ユーザの認証情報を生成し、プロファイルとして設定します。
1.0 ユーザの切り替え
ここで、最初に利用していた認証情報に切り替えます。
インスタンスプロファイルを利用していた場合は、環境変数をリセットしてください。
コマンド
unset AWS_DEFAULT_PROFILE
コマンド
aws configure list
結果
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************EPRQ iam-role
secret_key ****************RQyb iam-role
region ap-northeast-1 env AWS_DEFAULT_REGION
別のプロファイルを利用していた場合には、プロファイルを切り替えてください。
コマンド
export AWS_DEFAULT_PROFILE='(切り替え前のプロファイル名)'
コマンド
aws configure list
1.1. access keyの作成と取得
変数の確認
コマンド
cat << ETX
ADMIN_NAME: ${ADMIN_NAME}
ETX
結果
ADMIN_NAME: jawsug-cli-admin
access keyの作成と取得
コマンド
aws iam create-access-key \
--user-name ${ADMIN_NAME} \
> ${ADMIN_NAME}.json \
&& cat ${ADMIN_NAME}.json
結果
{
"AccessKey": {
"UserName": "jawsug-cli-admin",
"Status": "Active",
"CreateDate": "2016-08-06T05:55:49.222Z",
"SecretAccessKey": "****************************************",
"AccessKeyId": "********************"
}
}
アクセスキーの抽出
コマンド
ADMIN_ACCESS_KEY=$( \
cat ${ADMIN_NAME}.json \
| jp.py 'AccessKey.AccessKeyId' \
| sed 's/"//g') \
&& echo ${ADMIN_ACCESS_KEY}
ADMIN_SECRET_ACCESS_KEY=$( \
cat ${ADMIN_NAME}.json \
| jp.py 'AccessKey.SecretAccessKey' \
| sed 's/"//g') \
&& echo ${ADMIN_SECRET_ACCESS_KEY}
1.2. プロファイル名の指定
同じ名前のプロファイルを使用していないことを確認してください。
コマンド
ADMINS_PROFILE_NAME=${ADMIN_NAME}
1.3. プロファイルの確認
プロファイル名が未使用であることを確認します。
コマンド
aws configure get aws_access_key_id \
--profile ${ADMINS_PROFILE_NAME}
結果
The config profile (jawsug-cli-admin) could not be found
コマンド
aws configure get aws_secret_access_key \
--profile ${ADMINS_PROFILE_NAME}
結果
The config profile (jawsug-cli-admin) could not be found
コマンド
aws configure get region \
--profile ${ADMINS_PROFILE_NAME}
結果
The config profile (jawsug-cli-admin) could not be found
1.4. プロファイルの作成
変数の確認
コマンド
cat << ETX
ADMIN_NAME: ${ADMIN_NAME}
ACCESS_KEY: ${ADMIN_ACCESS_KEY}
SECRET_ACCESS_KEY: ${ADMIN_SECRET_ACCESS_KEY}
REGION: ${AWS_DEFAULT_REGION}
ETX
結果
ADMIN_NAME: jawsug-cli-admin
ACCESS_KEY: ********************
SECRET_ACCESS_KEY: ***********************************
REGION: ap-northeast-1
プロファイルの作成
コマンド
aws configure set aws_access_key_id ${ADMIN_ACCESS_KEY} \
--profile ${ADMINS_PROFILE_NAME}
結果
(戻り値無し)
コマンド
aws configure set aws_secret_access_key ${ADMIN_SECRET_ACCESS_KEY} \
--profile ${ADMINS_PROFILE_NAME}
結果
(戻り値無し)
コマンド
aws configure set region ${AWS_DEFAULT_REGION} \
--profile ${ADMINS_PROFILE_NAME}
結果
(戻り値無し)
1.5. 認証情報の確認(.aws/credentials)
コマンド
cat ~/.aws/credentials
結果(例)
[jawsug-cli-user]
aws_access_key_id = ********************
aws_secret_access_key = ***********************************
[jawsug-cli-admin]
aws_access_key_id = ********************
aws_secret_access_key = ***********************************
1.6. 認証情報の確認(.aws/config)
コマンド
cat ~/.aws/config
結果(例)
[profile jawsug-cli-user]
region = ap-northeast-1
s3 =
signature_version = s3v4
[profile jawsug-cli-admin]
region = ap-northeast-1
2. ユーザの切り替え
2.1. 現在のユーザの確認
あとで現在の状態に戻るため、結果を控えておいてください。(以下の結果は、インスタンスプロファイルを利用している場合)
コマンド
aws configure list
結果(例)
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************CIIA iam-role
secret_key ****************wGIk iam-role
region ap-northeast-1 env AWS_DEFAULT_REGION
2.2. 切替後ユーザの確認
コマンド
cat << ETX
ADMINS_PROFILE_NAME: ${ADMINS_PROFILE_NAME}
ETX
結果
ADMINS_PROFILE_NAME: jawsug-cli-admin
2.3. ユーザの切り替え
コマンド
export AWS_DEFAULT_PROFILE=${ADMINS_PROFILE_NAME}
2.4. 認証情報の確認
コマンド
aws configure list
結果
Name Value Type Location
---- ----- ---- --------
profile jawsug-cli-user manual --profile
access_key ****************QNVA shared-credentials-file
secret_key ****************fTJ+ shared-credentials-file
region ap-northeast-1 env AWS_DEFAULT_REGION
3. キーのローテーション
任意の周期でローテーションさせることはできないようです。
3.1. 設定の確認
コマンド
aws kms get-key-rotation-status \
--key-id ${KEY_ID}
結果
{
"KeyRotationEnabled": false
}
3.2. ローテーションの有効化
コマンド
aws kms enable-key-rotation \
--key-id ${KEY_ID}
結果
(戻り値無し)
3.3. 設定の確認
コマンド
aws kms get-key-rotation-status \
--key-id ${KEY_ID}
結果
{
"KeyRotationEnabled": true
}
以上です。