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

3.2. Organizationsポリシーの作成 (CloudShell: DenyAllOutsideRequestedRegions-policy)

手順の目的

Organizationsポリシー"DenyAllOutsideRequestedRegions-policy"を作成します。

設定値の指定

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

1. Organizationsポリシー名

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

変数の設定:

ORGANIZATIONS_POLICY_NAME='DenyAllOutsideRequestedRegions-policy'

2. Organizationsポリシーの説明

Organizationsポリシーの説明を指定します。

変数の設定:

ORGANIZATIONS_POLICY_DESCRIPTION='Policy for block unused regions.'

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

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

変数の設定:

ORGANIZATIONS_POLICY_TYPE_NAME="SERVICE_CONTROL_POLICY"

4. ポリシードキュメントファイル名

ポリシードキュメント用ディレクトリを指定します。

変数の設定:

DIR_ORGANIZATIONS_POLICY_DOC="${HOME}/conf-handson-cli-organizations"

Organizationsポリシードキュメント名を指定します。

変数の設定:

ORGANIZATIONS_POLICY_DOC_NAME='DenyAllOutsideRequestedRegions-policy'

ポリシードキュメントファイル名を指定します。

変数の設定:

FILE_ORGANIZATIONS_POLICY_DOC="${DIR_ORGANIZATIONS_POLICY_DOC}/${ORGANIZATIONS_POLICY_DOC_NAME}.json" \
  && echo ${FILE_ORGANIZATIONS_POLICY_DOC}

結果(例):

${HOME}/conf-handson-cli-organizations/DenyAllOutsideRequestedRegions-policy.json

設定値の確認

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

変数の確認:

cat << END

  # 1. ORGANIZATIONS_POLICY_NAME:"DenyAllOutsideRequestedRegions-policy"
       ORGANIZATIONS_POLICY_NAME="${ORGANIZATIONS_POLICY_NAME}"
  # 2. ORGANIZATIONS_POLICY_DESCRIPTION:"Policy for block unused regions."
       ORGANIZATIONS_POLICY_DESCRIPTION="${ORGANIZATIONS_POLICY_DESCRIPTION}"
  # 3. ORGANIZATIONS_POLICY_TYPE_NAME:"SERVICE_CONTROL_POLICY"
       ORGANIZATIONS_POLICY_TYPE_NAME="${ORGANIZATIONS_POLICY_TYPE_NAME}"
  # 4. FILE_ORGANIZATIONS_POLICY_DOC:"${HOME}/conf-handson-cli-organizations/DenyAllOutsideRequestedRegions-policy.json"
       FILE_ORGANIZATIONS_POLICY_DOC="${FILE_ORGANIZATIONS_POLICY_DOC}"

END

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

処理の実行

Organizationsポリシーを作成します。

変数の確認:

cat << END

  # ORGANIZATIONS_POLICY_NAME:"DenyAllOutsideRequestedRegions-policy"
    ORGANIZATIONS_POLICY_NAME="${ORGANIZATIONS_POLICY_NAME}"
  # ORGANIZATIONS_POLICY_DESCRIPTION:"Policy for block unused regions."
    ORGANIZATIONS_POLICY_DESCRIPTION="${ORGANIZATIONS_POLICY_DESCRIPTION}"
  # ORGANIZATIONS_POLICY_TYPE_NAME:"SERVICE_CONTROL_POLICY"
    ORGANIZATIONS_POLICY_TYPE_NAME="${ORGANIZATIONS_POLICY_TYPE_NAME}"
  # FILE_ORGANIZATIONS_POLICY_DOC:"${HOME}/conf-handson-cli-organizations/DenyAllOutsideRequestedRegions-policy.json"
    FILE_ORGANIZATIONS_POLICY_DOC="${FILE_ORGANIZATIONS_POLICY_DOC}"

END

コマンド:

aws organizations create-policy \
  --name ${ORGANIZATIONS_POLICY_NAME} \
  --description "${ORGANIZATIONS_POLICY_DESCRIPTION}" \
  --type ${ORGANIZATIONS_POLICY_TYPE_NAME} \
  --content file://${FILE_ORGANIZATIONS_POLICY_DOC}

結果(例):

{
    "Policy": {
        "PolicySummary": {
            "Id": "p-xxxxxxxx",
            "Arn": "arn:aws:organizations::XXXXXXXXXXXX:policy/o-xxxxxxxxxx/service_control_policy/p-xxxxxxxx",
            "Name": "DenyAllOutsideRequestedRegions-policy",
            "Description": "Policy for block unused regions.",
            "Type": "SERVICE_CONTROL_POLICY",
            "AwsManaged": false
        },
        "Content": "{n  "Version": "2012-10-17",n  "Statement": [n    {n      "Sid": "DenyAllOutsideRequestedRegions",n      "Effect": "Deny",n      "NotAction": [n        "cloudfront:*",n        "iam:*",n        "route53:*",n        "support:*",n        "aws-portal:*",n        "budgets:*"n      ],n      "Resource": "*",n      "Condition": {n        "StringNotEquals": {n          "aws:RequestedRegion": [n            "us-east-1",n            "us-west-2",n            "ap-northeast-1",n            "ap-northeast-3"n          ]n        }n      }n    }n  ]n}n"
    }
}

完了確認

本手順の主処理は、以下の完了条件を満たしたときに成功したものとします。

完了条件1: Organizationsポリシー"DenyAllOutsideRequestedRegions-policy"が存在する。

「Organizationsポリシー"DenyAllOutsideRequestedRegions-policy"が存在する。」ことを確認します。

コマンド:

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

結果(例):

DenyAllOutsideRequestedRegions-policy

手順の完了

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

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

AWSアカウント(画面)

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

課題

動作確認