ハンズオン(簡易版): Organizations基礎(アカウント作成)

クリーンアップ2. Organizations組織ユニットからのポリシーのデタッチ (CloudShell: oregon-japan-ou: DenyAllOutsideRequestedRegions-policy)

手順の目的

Organizations組織ユニット"oregon-japan-ou"からポリシー"DenyAllOutsideRequestedRegions-policy"をデタッチします。

設定値の指定

手順に必要な設定値を変数に格納をします。

1. Organizations組織ユニット名

Organizations組織ユニット名を指定します。

変数の設定:

ORGANIZATIONS_ORGANIZATIONAL_UNIT_NAME="oregon-japan-ou"

2. Organizationsポリシーのポリシータイプ

Organizationsポリシーのポリシータイプを指定します。

変数の設定:

ORGANIZATIONS_POLICY_TYPE_NAME="SERVICE_CONTROL_POLICY"

3. Organizationsポリシー名

Organizationsポリシー名を指定します。

変数の設定:

ORGANIZATIONS_POLICY_NAME='DenyAllOutsideRequestedRegions-policy'

設定値の確認

各変数に正しい設定値が格納されていることを確認します。

変数の確認:

cat << END

  # 1. ORGANIZATIONS_ORGANIZATIONAL_UNIT_NAME:"oregon-japan-ou"
       ORGANIZATIONS_ORGANIZATIONAL_UNIT_NAME="${ORGANIZATIONS_ORGANIZATIONAL_UNIT_NAME}"
  # 2. ORGANIZATIONS_POLICY_TYPE_NAME:"SERVICE_CONTROL_POLICY"
       ORGANIZATIONS_POLICY_TYPE_NAME="${ORGANIZATIONS_POLICY_TYPE_NAME}"
  # 3. ORGANIZATIONS_POLICY_NAME:"DenyAllOutsideRequestedRegions-policy"
       ORGANIZATIONS_POLICY_NAME="${ORGANIZATIONS_POLICY_NAME}"

END

各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

上位組織(組織ルート)IDを取得します。

コマンド:

ORGANIZATIONS_ROOT_ID=$( \
  aws organizations list-roots \
    --query 'Roots[?Name == `Root`].Id' \
    --output text \
) \
  && echo ${ORGANIZATIONS_ROOT_ID}

結果(例):

r-xxxx

変数の設定:

ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_PARENT=${ORGANIZATIONS_ROOT_ID}

組織ユニットIDを取得します。

コマンド:

ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID=$( \
  aws organizations list-organizational-units-for-parent \
    --parent-id ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_PARENT} \
    --query "OrganizationalUnits[?Name == \`${ORGANIZATIONS_ORGANIZATIONAL_UNIT_NAME}\`].Id" \
    --output text \
) \
  && echo ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID}

結果(例):

ou-xxxx-xxxxxxxx

ポリシーIDを取得します。

コマンド:

ORGANIZATIONS_POLICY_ID=$( \
  aws organizations list-policies \
    --filter ${ORGANIZATIONS_POLICY_TYPE_NAME} \
    --query Policies[?Name==\`${ORGANIZATIONS_POLICY_NAME}\`].Id \
    --output text \
) \
  && echo ${ORGANIZATIONS_POLICY_ID}

結果(例):

p-xxxxxxxx

Organizations組織ユニットからポリシーをデタッチします。

変数の確認:

cat << END

  # ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID:"ou-xxxx-xxxxxxxx"
    ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID="${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID}"
  # ORGANIZATIONS_POLICY_ID:"p-xxxxxxxx"
    ORGANIZATIONS_POLICY_ID="${ORGANIZATIONS_POLICY_ID}"

END

コマンド:

aws organizations detach-policy \
  --target-id ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID} \
  --policy-id ${ORGANIZATIONS_POLICY_ID} 

結果(例):

(出力なし)

完了確認

「Organizations組織ルート直下のOrganizations組織ユニット"oregon-japan-ou"にOrganizationsポリシー"DenyAllOutsideRequestedRegions-policy"がアタッチされていない。」ことを確認します。

コマンド:

aws organizations list-policies-for-target \
  --target-id ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID} \
  --filter ${ORGANIZATIONS_POLICY_TYPE_NAME} \
  --query "Policies[?Name == \`${ORGANIZATIONS_POLICY_NAME}\`].Name" \
  --output text

結果(例):

(出力なし)

手順の完了

(参考) マネジメントコンソールの確認

  • 左ペインの"AWSアカウント"をクリックします。

AWSアカウント(画面)

  • 組織が存在することを確認します。

課題

動作確認