1.1. IAMポリシの作成 (handson-Cloud9EnvironmentOwner-policy)

作業の目的 [why]

マネジメントコンソールでIAMポリシ"handson-Cloud9EnvironmentOwner-policy"を作成します。

完了条件/事前条件 [設計者用情報]

完了条件 [after]

主処理は、以下を満たしたときに成功したものとします。

完了条件1
IAMポリシ"handson-Cloud9EnvironmentOwner-policy"が存在する。

事前条件 [before]

主処理の実施は、以下の状態であることを前提とします。

事前条件1
IAMポリシ"handson-Cloud9EnvironmentOwner-policy"が存在しない。

作業対象 [what]

  • IAMサービス

標準時間(合計)

8分

パラメータ設定

パラメータ設定の標準時間:2分

作業に必要なモノ・情報 [resource]

作業開始には、以下が全て揃っていることが必要です。

リソース1: IAMポリシ名

  • 作成するIAMポリシの名称です。
  • 今回は"handson-Cloud9EnvironmentOwner-policy"とします。

タスクの実施

タスク標準時間:6分

1. 前処理

処理対象の状態確認

主処理の実施は、以下の状態であることを前提とします。

前提と異なることが判明した場合、直ちに処理を中止します。

事前条件1: IAMポリシ"handson-Cloud9EnvironmentOwner-policy"が存在しない。

「IAMポリシ"handson-Cloud9EnvironmentOwner-policy"が存在しない。」ことを確認します。

  • IAMマネジメントコンソールの"ポリシー"( https://console.aws.amazon.com/iam/home#/policies )にアクセスします。

  • "フィルター"で"ユーザーによる管理"を選択します。

    _images/filter-select.png
  • "検索"欄に"handson-Cloud9EnvironmentOwner-policy"を入力します。

    _images/list-policies.png
  • "結果がありません"と表示されることを確認します。

2. 主処理

IAMポリシの作成

ポリシーの作成 (画面)

_images/step11.png
  • "JSON"(タブ)をクリックします。
_images/step1-json.png
  • 以下のポリシドキュメントで上書きします。

    ポリシ:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "cloud9:ValidateEnvironmentName",
                    "cloud9:GetUserPublicKey",
                    "iam:GetUser",
                    "iam:ListUsers",
                    "ec2:DescribeIamInstanceProfileAssociations",
                    "ec2:DescribeInstances",
                    "ec2:DescribeInstanceStatus",
                    "ec2:DescribeSubnets",
                    "ec2:DescribeVolumes",
                    "ec2:DescribeVpcs"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "cloud9:CreateEnvironmentEC2",
                    "cloud9:DeleteEnvironment"
                ],
                "Resource": "*",
                "Condition": {
                    "StringLike": {
                        "cloud9:EnvironmentName": "handson-*",
                        "cloud9:InstanceType": "t2.*"
                    }
                }
            },
            {
                "Effect": "Allow",
                "Action": "cloud9:DescribeEnvironmentMemberships",
                "Resource": "*",
                "Condition": {
                    "Null": {
                        "cloud9:UserArn": "true",
                        "cloud9:EnvironmentId": "true"
                    }
                }
            },
            {
                "Effect": "Allow",
                "Action": "iam:CreateServiceLinkedRole",
                "Resource": "*",
                "Condition": {
                    "StringLike": {
                        "iam:AWSServiceName": "cloud9.amazonaws.com"
                    }
                }
            },
            {
                "Effect": "Allow",
                "Action": [
                    "ec2:DisassociateIamInstanceProfile",
                    "ec2:AssociateIamInstanceProfile"
                ],
                "Resource": "arn:aws:ec2:*:*:instance/*",
                "Condition": {
                    "StringLike": {
                        "ec2:ResourceTag/Name": "aws-cloud9-handson-*"
                    }
                }
            },
            {
                "Sid": "VisualEditor4",
                "Effect": "Allow",
                "Action": [
                  "ec2:RebootInstances",
                  "ec2:StopInstances",
                  "ec2:StartInstances",
                  "ec2:TerminateInstances"
                ],
                "Resource": "arn:aws:ec2:*:*:instance/*",
                "Condition": {
                    "StringLike": {
                        "ec2:ResourceTag/Name": "aws-cloud9-handson-*"
                    }
                }
            },
            {
                "Action": "iam:ListInstanceProfiles",
                "Effect": "Allow",
                "Resource": [
                    "arn:aws:iam::*:instance-profile/*"
                ]
            },
            {
                "Action": "iam:PassRole",
                "Effect": "Allow",
                "Resource": [
                    "arn:aws:iam::*:role/handson-*"
                ],
                "Condition": {
                    "StringLike": {
                        "iam:PassedToService": [
                            "ec2.amazonaws.com"
                        ]
                    }
                }
            }
        ]
    }
    
  • "Review Policy"(ボタン)をクリックします。

ポリシーの確認 (画面)

  • 以下を入力します。
    名前:handson-Cloud9EnvironmentOwner-policy
    説明:(任意)
  • "Create Policy"(ボタン)をクリックします。

ポリシー 一覧(画面)

ポリシの作成が完了すると、一覧画面に戻ります。

_images/list-policies.png

3. 後処理

完了条件の確認

主処理は、以下を満たしたときに成功したものとします。

完了条件1: IAMポリシ"handson-Cloud9EnvironmentOwner-policy"が存在する。

「IAMポリシ"handson-Cloud9EnvironmentOwner-policy"が存在する。」ことを確認します。

  • IAMマネジメントコンソールの"ポリシー"( https://console.aws.amazon.com/iam/home#/policies )にアクセスします。

    _images/list-policies.png
  • "フィルター"で"カスタマー管理ポリシー"を選択します。

    _images/filter-select.png
  • "検索"欄に"handson-Cloud9EnvironmentOwner-policy"を入力します。

    _images/list-policies.png
  • IAMポリシー"handson-Cloud9EnvironmentOwner-policy"が一覧に存在することを確認します。

完了