SSM AutomationでEC2のIAM Role Policyを承認後に変更する
SSM AutomationでEC2のIAM Role Policyを承認後に変更する:
SSM Automationの機能を使ってEC2のIAM Role Policyを変更する
その際に複数人からの承認があって初めて変更できるというフローにしたい
ユースケースとしては、AWS Systems Manager Session Managerを実行する権限を一時的につけたいなど
インスタンスの作り方は省略
あとは作ったインスタンスにAttach
NOTIFICATION_ARNで設定した箇所にメールなり通知が届いているので内容を確認する
Approveすれば次のステップに進むし、Rejectすればそこで作業は止まる
IAM Roleの状態を見ながらステップを進めていくと良い
SSM AutomationでEC2のIAM Role Policyを承認後に変更する
概要
SSM Automationの機能を使ってEC2のIAM Role Policyを変更するその際に複数人からの承認があって初めて変更できるというフローにしたい
ユースケースとしては、AWS Systems Manager Session Managerを実行する権限を一時的につけたいなど
作業の流れ
- EC2インスタンスにIAM RoleをAttachする
- SSM AutomationでAttachするIAM Policyを作成する
- SSM AutomationのYAMLを書く
作業
EC2インスタンスにIAM RoleをAttachする
インスタンスの作り方は省略
IAM RoleとInstance Profileの作成
$ 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}"
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をIAM RoleにAttachする
- 1人以上に承認もらえれば次のステップに行ける
- AWSのAPIを叩いてIAM PolicyをIAM RoleにDetachする
作業内容
$ 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の状態を見ながらステップを進めていくと良い
コメント
コメントを投稿