Help us understand the problem. What is going on with this article?

[JAWS-UG CLI] Amazon KMS 入門 (6) カスタマーマスターキー(+他)の削除

More than 3 years have passed since last update.

このハンズオンについて

この手順は、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'

USER_NAME='jawsug-cli-user'

ARN_S3='arn:aws:iam::aws:policy/AmazonS3FullAccess'

AWS_ID=$(aws sts get-caller-identity \
    --query Account \
    --output text) \
    && echo ${AWS_ID}

BUCKET_NAME="kms-test-${AWS_ID}" \
    && echo ${BUCKET_NAME}

ALIAS="alias/cli-handson0815"

KEY_ID=$(aws kms list-aliases \
    --query "Aliases[?AliasName == \`${ALIAS}\`].TargetKeyId" \
    --output text) \
    && echo ${KEY_ID}

1. S3バケットの削除

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. S3バケットの削除(パラメータの確認)

コマンド
cat << ETX

    BUCKET_NAME: ${BUCKET_NAME}

ETX
結果
    BUCKET_NAME: kms-test-************

1.2. S3バケットの削除

コマンド
aws s3 rb s3://${BUCKET_NAME} \
    --force
結果
delete: s3://kms-test-************/test.txt
remove_bucket: s3://kms-test-************/

2. カスタマーマスターキーの削除

2.1. カスタマーマスターキーの削除(パラメータの確認)

コマンド
cat << ETX

    KEY_ID: ${KEY_ID}

ETX
結果
    KEY_ID: ********-****-****-****-************

2.2. カスタマーマスターキーの削除

削除保留期間は7日が最小値です。

http://docs.aws.amazon.com/cli/latest/reference/kms/schedule-key-deletion.html

コマンド
aws kms schedule-key-deletion \
    --key-id ${KEY_ID} \
    --pending-window-in-days 7
結果
{
    "KeyId": "arn:aws:kms:ap-northeast-1:************:key/********-****-****-****-************",
    "DeletionDate": 1471219200.0
}

2.3. カスタマーマスターキーの削除(確認)

KeyStateが変わるまでに少々時間がかかるようです。

PendingDeletionになっていれば成功です。

コマンド
aws kms describe-key \
    --key-id ${KEY_ID}
結果
{
    "KeyMetadata": {
        "KeyId": "********-****-****-****-************",
        "Description": "JAWS-UG CLI 58 KMS at Co-Edo",
        "DeletionDate": 1471219200.0,
        "Enabled": false,
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "PendingDeletion",
        "CreationDate": 1470540911.677,
        "Arn": "arn:aws:kms:ap-northeast-1:************:key/********-****-****-****-************",
        "AWSAccountId": "************"
    }
}

3. IAMユーザの削除

3.1. 変数の確認

コマンド
cat << ETX

    ADMIN_NAME: ${ADMIN_NAME}
    USER_NAME: ${USER_NAME}

ETX
結果
    ADMIN_NAME: jawsug-cli-admin
    USER_NAME: jawsug-cli-user

3.2. アクセスキーの削除

コマンド
aws iam delete-access-key \
    --user-name ${ADMIN_NAME} \
    --access-key-id "$(cat ${ADMIN_NAME}.json | jq -r .AccessKey.AccessKeyId)"
結果
(戻り値無し)
コマンド
aws iam delete-access-key \
    --user-name ${USER_NAME} \
    --access-key-id "$(cat ${USER_NAME}.json | jq -r .AccessKey.AccessKeyId)"
結果
(戻り値無し)

3.3. Managed Policyのデタッチ

コマンド
aws iam detach-user-policy \
    --user-name ${USER_NAME} \
    --policy-arn ${ARN_S3}
結果
(戻り値無し)

3.4. IAMユーザの削除

コマンド
aws iam delete-user \
    --user-name ${ADMIN_NAME}
結果
(戻り値無し)
コマンド
aws iam delete-user \
    --user-name ${USER_NAME}
結果
(戻り値無し)

3.5. 確認

コマンド
aws iam get-user \
    --user-name ${ADMIN_NAME}
結果
An error occurred (NoSuchEntity) when calling the GetUser operation: The user with name jawsug-cli-admin cannot be found.
コマンド
aws iam get-user \
    --user-name ${USER_NAME}
結果
An error occurred (NoSuchEntity) when calling the GetUser operation: The user with name jawsug-cli-user cannot be found.

以上

お疲れ様でした。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away