SSM Automation에서 EC2의 IAM Role Policy를 승인한 후 변경

4673 단어 automationSSMAWS

SSM Automation에서 EC2의 IAM Role Policy를 승인한 후 변경


개요


SSM Automation 기능을 사용하여 EC2의 IAM Role Policy 변경
여러 사람의 인정을 받아야만 바뀔 수 있는 절차를 만들어야 합니다.
예를 들어, AWS Systems Manager Session Manager를 일시적으로 실행할 수 있는 권한 등이 있어야 합니다.

작업흐름

  • EC2 인스턴스 Attach IAM Role
  • SSM Automation을 통해 Attach를 제작한 IAM Policy
  • YAML 쓰기 SSM Automation
  • 작업


    EC2 인스턴스 Attach IAM Role


    실례의 제작 방법은 생략한다

    IAM Role 및 Instance 소개 제작

    $ ROLE_AND_PROFILE_NAME=ssm-automation-test-role
    $ ASSUME_ROLE_POLICY_DOCUMENT=$(cat << EOS
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    EOS
    )
    $ aws iam create-role \
      --role-name "${ROLE_AND_PROFILE_NAME}" \
      --assume-role-policy-document "${ASSUME_ROLE_POLICY_DOCUMENT}"
    $ aws iam create-instance-profile \
      --instance-profile-name "${ROLE_AND_PROFILE_NAME}"
    
    그리고 실제로 Attach.

    SSM Automation으로 Attach의 IAM Policy 만들기

    $ POLICY_NAME=ssm-automation-test-policy
    $ POLICY_JSON=$(cat << EOS
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ec2:DescribeInstances",
                "Resource": "*"
            }
        ]
    }
    EOS
    )
    $ aws iam create-policy \
      --policy-name "${POLICY_NAME}" \
      --policy-document "${POLICY_JSON}"
    

    SSM Automation 쓰기 YAML


    SSM Automation 프로세스

  • 1인 이상 승인을 받으면 다음 단계로 진입
  • AWS의 API를 두드려 IAM Policy Attach를 IAM Role
  • 1인 이상 승인을 받으면 다음 단계로 진입
  • AWS의 API를 두드려 IAM Policy Detach를 IAM Role
  • 로 이동
    중간에 승인되지 않은 경우 Automation이 완료됩니다.

    작업 내용

    $ NOTIFICATION_ARN=[SNSのTopic ARNなど]
    $ AWS_ACCOUNT_ID=[自分のAWSのアカウントID]
    $ APPROVERS=[承認者のIAM User ARNだったり、IAM GroupのARN]
    $ DOCUMENT_CONTENT=$(cat << EOS
    ---
    schemaVersion: "0.3"
    description: "Automation Document Example YAML"
    mainSteps:
    - name: approve_attach
      action: aws:approve
      timeoutSeconds: 1000
      onFailure: Abort
      inputs:
        NotificationArn: "${NOTIFICATION_ARN}"
        Message: "EC2にec2:DescribeInstancesの権限を一時的につけたいです。"
        MinRequiredApprovals: 1
        Approvers:
          - "${APPROVERS}"
    - name: attach_policy
      action: aws:executeAwsApi
      inputs:
        Service: iam
        Api: AttachRolePolicy
        RoleName: "ssm-automation-test"
        PolicyArn: "arn:aws:iam::${AWS_ACCOUNT_ID}:policy/ssm-automation-test-policy"
    - name: approve_detach
      action: aws:approve
      timeoutSeconds: 1000
      onFailure: Abort
      inputs:
        NotificationArn: "${NOTIFICATION_ARN}"
        Message: "EC2のec2:DescribeInstancesの権限を外したいです。"
        MinRequiredApprovals: 1
        Approvers:
          - "${APPROVERS}"
    - name: detach_policy
      action: aws:executeAwsApi
      onFailure: Continue
      inputs:
        Service: iam
        Api: DetachRolePolicy
        RoleName: "ssm-automation-test"
        PolicyArn: "arn:aws:iam::${AWS_ACCOUNT_ID}:policy/ssm-automation-test-policy"
    EOS
    )
    $ aws ssm create-document \
        --content "${DOCUMENT_CONTENT}" \
        --document-type "Automation" \
        --name "attach-policy" \
        --document-format "YAML"
    

    동작 확인


    NOTIFICATION_ARN이 설정한 곳에서 메일이나 알림을 받고 내용을 확인했습니다.
    Approve는 다음 단계로 넘어갈 수 있고 Reject는 작업이 멈춘다
    IAM Role의 상태를 지켜보면서 하는 게 좋을 것 같아요.

    메시지 내용


    좋은 웹페이지 즐겨찾기