処理の実行
インスタンスのARNを取得します。
コマンド:
sso_admin_instance_arn=$( \
aws sso-admin list-instances \
--query "Instances[].InstanceArn" \
--output text \
) \
&& echo ${sso_admin_instance_arn}
結果(例):
arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxxxxx
IdentityStore のIDを取得します。
コマンド:
sso_admin_identity_store_id=$( \
aws sso-admin list-instances \
--query "Instances[].IdentityStoreId" \
--output text \
) \
&& echo ${sso_admin_identity_store_id}
結果(例):
許可セットのARNを取得します。
コマンド:
for i in $(
aws sso-admin list-permission-sets \
--instance-arn ${sso_admin_instance_arn} \
--query 'PermissionSets[]' \
--output text \
); do
name=$(
aws sso-admin describe-permission-set \
--instance-arn ${sso_admin_instance_arn} \
--permission-set-arn ${i} \
--query 'PermissionSet.Name' \
--output text
)
if [ ${name}x == ${SSO_ADMIN_PERMISSION_SET_NAME}x ]; then
sso_admin_permission_set_arn=$(
aws sso-admin describe-permission-set \
--instance-arn ${sso_admin_instance_arn} \
--permission-set-arn ${i} \
--query 'PermissionSet.PermissionSetArn' \
--output text
)
fi
done \
&& echo ${sso_admin_permission_set_arn}
結果(例):
arn:aws:sso:::permissionSet/ssoins-xxxxxxxxxxxxxxxx/ps-xxxxxxxxxxxxxxxx
IAM Identity CenterグループIDを取得します。
コマンド:
identitystore_group_id=$( \
aws identitystore get-group-id \
--identity-store-id ${sso_admin_identity_store_id} \
--alternate-identifier "{\"UniqueAttribute\":{\"AttributePath\":\"displayName\",\"AttributeValue\":\"${IDENTITYSTORE_GROUP_DISPLAY_NAME}\"}}" \
--query "GroupId" \
--output text \
) \
&& echo ${identitystore_group_id}
結果(例):
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
SSO_ADMIN許可セットの削除
SSO Adminアカウントアサインメントを削除します。
変数の確認:
cat << END
# sso_admin_instance_arn:"arn:aws:sso:::instance/ssoins-xxxxxxxxxxxxxxxx"
sso_admin_instance_arn="${sso_admin_instance_arn}"
# sso_admin_permission_set_arn:"arn:aws:sso:::permissionSet/ssoins-xxxxxxxxxxxxxxxx/ps-xxxxxxxxxxxxxxxx"
sso_admin_permission_set_arn="${sso_admin_permission_set_arn}"
# SSO_ADMIN_ACCOUNT_ASSIGNMENT_TARGET_TYPE:"AWS_ACCOUNT"
SSO_ADMIN_ACCOUNT_ASSIGNMENT_TARGET_TYPE="${SSO_ADMIN_ACCOUNT_ASSIGNMENT_TARGET_TYPE}"
# AWS_ACCOUNT_ID:"XXXXXXXXXXXX"
AWS_ACCOUNT_ID="${AWS_ACCOUNT_ID}"
# SSO_ADMIN_ACCOUNT_ASSIGNMENT_PRINCIPAL_TYPE:"GROUP"
SSO_ADMIN_ACCOUNT_ASSIGNMENT_PRINCIPAL_TYPE="${SSO_ADMIN_ACCOUNT_ASSIGNMENT_PRINCIPAL_TYPE}"
# identitystore_group_id:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
identitystore_group_id="${identitystore_group_id}"
# FILE_TMP_SSO_ADMIN_ACCOUNT_ASSIGNMENT_OUTPUT:"${HOME}/environment/tmp-handson-cli-iic/2023-12-21-handson-cli-iic-permission-set-AWS_ACCOUNT-XXXXXXXXXXXX-GROUP-handson-cli-iic-group-deletion.json""
FILE_TMP_SSO_ADMIN_ACCOUNT_ASSIGNMENT_OUTPUT="${FILE_TMP_SSO_ADMIN_ACCOUNT_ASSIGNMENT_OUTPUT}"
END
コマンド:
aws sso-admin delete-account-assignment \
--instance-arn ${sso_admin_instance_arn} \
--permission-set-arn ${sso_admin_permission_set_arn} \
--target-type ${SSO_ADMIN_ACCOUNT_ASSIGNMENT_TARGET_TYPE} \
--target-id ${AWS_ACCOUNT_ID} \
--principal-type ${SSO_ADMIN_ACCOUNT_ASSIGNMENT_PRINCIPAL_TYPE} \
--principal-id ${identitystore_group_id} \
> ${FILE_TMP_SSO_ADMIN_ACCOUNT_ASSIGNMENT_OUTPUT} \
&& cat ${FILE_TMP_SSO_ADMIN_ACCOUNT_ASSIGNMENT_OUTPUT}
結果(例):
{
"AccountAssignmentDeletionStatus": {
"Status": "IN_PROGRESS",
"RequestId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"TargetId": "XXXXXXXXXXXX",
"TargetType": "AWS_ACCOUNT",
"PermissionSetArn": "arn:aws:sso:::permissionSet/ssoins-xxxxxxxxxxxxxxxx/ps-xxxxxxxxxxxxxxxx",
"PrincipalType": "GROUP",
"PrincipalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
リクエストIDを取得します。
コマンド:
sso_admin_account_assignment_deletion_request_id=$( \
cat ${FILE_TMP_SSO_ADMIN_ACCOUNT_ASSIGNMENT_OUTPUT} \
| jp.py 'AccountAssignmentDeletionStatus.RequestId' \
| sed 's/\"//g' \
) \
&& echo ${sso_admin_account_assignment_deletion_request_id}
結果(例):
xxxxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxxx
完了確認
「SSO Admin許可セット名"handson-cli-iic-permission-set"、SSO Adminアカウントアサインターゲットタイプ"AWS_ACCOUNT"、対象AWSアカウントのアカウントID"XXXXXXXXXXXX"、SSO Adminアカウントアサインプリンシパルタイプ"GROUP"、SSO Adminアカウントアサインプリンシパル(IdentityStoreグループ表示名)"handson-cli-iic-group"のSSO Adminアカウントアサインメントが存在しない。」ことを確認します。
コマンド:
aws sso-admin list-account-assignments \
--instance-arn ${sso_admin_instance_arn} \
--permission-set-arn ${sso_admin_permission_set_arn} \
--account-id ${AWS_ACCOUNT_ID} \
--query "length(
AccountAssignments[?
PrincipalType == \`${SSO_ADMIN_ACCOUNT_ASSIGNMENT_PRINCIPAL_TYPE}\`
&& PrincipalId == \`${identitystore_group_id}\`
])"
結果(例):
「SSO Adminアカウントアサインメントのステータスが"SUCCEEDED"である。」ことを確認します。
コマンド:
aws sso-admin describe-account-assignment-deletion-status \
--instance-arn ${sso_admin_instance_arn} \
--account-assignment-deletion-request-id ${sso_admin_account_assignment_deletion_request_id} \
--query 'AccountAssignmentDeletionStatus.Status' \
--output text
結果(例):
アカウントアサインメントステータス一時ファイルを削除します。
コマンド:
rm ${FILE_TMP_SSO_ADMIN_ACCOUNT_ASSIGNMENT_OUTPUT}
結果(例):