AWS CLI를 사용한 유지 관리 기간에 대한 액세스 제어
다음 절차에서는 AWS Command Line Interface(AWS CLI)를 사용하여 AWS Systems Manager의 도구인 Maintenance Windows에 대한 필수 권한 및 역할을 생성하는 방법을 설명합니다.
주제
작업 1: 신뢰 정책 및 고객 관리형 정책 파일을 JSON 형식으로 생성
유지 관리 기간 작업에는 대상 리소스에서 실행하는 데 필요한 권한을 제공하기 위해 IAM 역할이 필요합니다. 권한은 역할에 연결된 IAM 정책을 통해 제공됩니다. 실행하는 작업 유형 및 기타 운영 요구 사항에 따라 이 정책의 내용이 결정됩니다. 필요에 따라 조정할 수 있는 기본 정책을 제공합니다. 유지 관리 기간이 실행되는 작업 및 작업 유형에 따라 이 정책의 일부 권한이 필요하지 않을 수 있으며, 추가 사용 권한을 포함해야 할 수도 있습니다.
이 태스크에서는 사용자 지정 유지 관리 기간 역할에 필요한 권한을 JSON 파일 페어에 지정합니다. 이후 태스크 2: AWS CLI를 사용하여 유지 관리 기간에 대한 사용자 지정 서비스 역할 생성 및 확인에서 이 정책을 해당 역할에 연결합니다.
신뢰 정책 및 고객 관리형 정책 파일을 JSON 형식으로 생성하려면
-
다음 신뢰 정책을 복사하여 텍스트 파일에 붙여 넣습니다. 파일을
mw-role-trust-policy.json
이라는 이름 및 파일 확장자로 저장합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
다음 JSON 정책을 복사하여 다른 텍스트 파일에 붙여 넣습니다. 첫 번째 파일을 만든 디렉터리에 이 파일을
mw-role-custom-policy.json
이라는 이름과 파일 확장자로 저장합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:SendCommand", "ssm:CancelCommand", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetCommandInvocation", "ssm:GetAutomationExecution", "ssm:StartAutomationExecution", "ssm:ListTagsForResource", "ssm:GetParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StartExecution" ], "Resource": [ "arn:aws:states:*:*:execution:*:*", "arn:aws:states:*:*:stateMachine:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*" ] }, { "Effect": "Allow", "Action": [ "resource-groups:ListGroups", "resource-groups:ListGroupResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": [ "ssm.amazonaws.com" ] } } } ] }
-
계정에서 실행하는 유지 관리 태스크에 필요한 경우
mw-role-custom-policy.json
의 콘텐츠를 수정합니다. 변경 사항은 계획된 작업에 따라 다릅니다.예:
-
와일드카드(*) 한정자를 사용하는 대신 특정 함수 및 상태 머신에 Amazon 리소스 이름(ARN)을 제공할 수 있습니다.
-
AWS Step Functions 작업을 실행할 계획이 없는 경우
states
권한 및 ARN을 제거할 수 있습니다. -
AWS Lambda 작업을 실행할 계획이 없는 경우
lambda
권한 및 ARN을 제거할 수 있습니다. -
Automation 작업을 실행할 계획이 없는 경우
ssm:GetAutomationExecution
및ssm:StartAutomationExecution
권한을 제거할 수 있습니다. -
작업을 실행하는 데 필요할 수 있는 권한을 추가합니다. 예를 들어 일부 자동화 작업은 AWS CloudFormation 스택과 함께 작동합니다. 따라서
cloudformation:CreateStack
,cloudformation:DescribeStacks
및cloudformation:DeleteStack
권한이 필요합니다.다른 예를 들어 Automation 실행서
AWS-CopySnapshot
의 경우 Amazon Elastic Block Store(Amazon EBS) 스냅샷을 생성할 수 있는 권한이 필요합니다. 따라서 서비스 역할에ec2:CreateSnapshot
권한이 필요합니다.Automation 실행서에 필요한 역할 권한에 대한 자세한 내용은 AWS Systems Manager Automation 실행서 참조의 실행서 설명을 참조하세요.
필요한 사항을 변경한 후 파일을 다시 저장합니다.
-
태스크 2: AWS CLI를 사용하여 유지 관리 기간에 대한 사용자 지정 서비스 역할 생성 및 확인
이전 태스크에서 만든 정책이 이 태스크에서 만드는 유지 관리 기간 서비스 역할에 첨부됩니다. 사용자가 유지 관리 기간 태스크를 등록할 때 해당 IAM 역할을 작업 구성의 일부로 지정합니다. 이 역할의 권한을 통해 Systems Manager가 사용자 대신 유지 관리 기간에서 작업을 실행할 수 있습니다.
중요
이전에는 Systems Manager 콘솔에서 작업에 대한 유지 관리 역할로 사용하도록 AWS에서 관리하는 IAM 서비스 연결 역할인 AWSServiceRoleForAmazonSSM
을 선택할 수 있었습니다. 유지 관리 기간에 이 역할 및 관련 정책인 AmazonSSMServiceRolePolicy
를 사용하는 것은 더 이상 권장되지 않습니다. 현재 유지 관리 기간 작업에 이 역할을 사용하는 경우 사용을 중지하는 것이 좋습니다. 대신, 유지 관리 기간 작업 실행 시 Systems Manager와 다른 AWS 서비스 간에 통신을 가능하게 하는 IAM 역할을 생성하세요.
이 태스크에서는 CLI 명령을 실행하여 유지 관리 기간 서비스 역할을 생성하고 생성한 JSON 파일에서 정책 콘텐츠를 추가합니다.
AWS CLI를 사용하여 유지 관리 기간에 대한 사용자 지정 서비스 역할 생성
-
AWS CLI를 열고
mw-role-custom-policy.json
및mw-role-trust-policy.json
을 배치한 디렉터리에서 다음 명령을 실행합니다. 이 명령은my-maintenance-window-role
이라는 유지 관리 기간 서비스 역할을 생성하고 여기에 신뢰 정책을 연결합니다.시스템은 다음과 유사한 정보를 반환합니다.
{ "Role": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" } } ] }, "RoleId": "AROAIIZKPBKS2LEXAMPLE", "CreateDate": "2024-08-19T03:40:17.373Z", "RoleName": "my-maintenance-window-role", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role" } }
참고
RoleName
및Arn
값을 적어둡니다. 이를 다음 명령에 포함합니다. -
다음 명령을 실행하여 고객 관리형 정책을 역할에 연결합니다.
account-id
자리 표시자를 자신의 AWS 계정 ID로 바꾸기 -
다음 명령을 실행하여 역할이 생성되었는지와 신뢰 정책이 연결되었는지 확인합니다.
aws iam get-role --role-name my-maintenance-window-role
이 명령은 다음과 유사한 정보를 반환합니다.
{ "Role": { "Path": "/", "RoleName": "my-maintenance-window-role", "RoleId": "AROA123456789EXAMPLE", "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role", "CreateDate": "2024-08-19T14:13:32+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "MaxSessionDuration": 3600, "RoleLastUsed": { "LastUsedDate": "2024-08-19T14:30:44+00:00", "Region": "us-east-2" } } }
-
다음 명령을 실행하여 고객 관리형 정책이 역할에 연결되었는지 확인합니다.
aws iam list-attached-role-policies --role-name my-maintenance-window-role
이 명령은 다음과 유사한 정보를 반환합니다.
{ "AttachedPolicies": [ { "PolicyName": "mw-role-custom-policy", "PolicyArn": "arn:aws:iam::123456789012:policy/mw-role-custom-policy" } ] }
태스크 3: AWS CLI를 사용하여 유지 관리 기간 태스크를 등록할 수 있는 권한을 지정된 사용자에게 부여
유지 관리 기간에 대한 사용자 지정 서비스 역할에 액세스할 수 있는 권한을 사용자에게 제공하면 유지 관리 기간 태스크에서 해당 역할을 사용할 수 있습니다. 이는 Maintenance Windows 도구에 대한 Systems Manager API 명령에 사용할 수 있도록 이미 부여한 권한에 추가됩니다. IAM 역할은 유지 관리 기간 태스크를 실행하는 데 필요한 권한을 전달합니다. 따라서 사용자에게 이러한 IAM 권한을 전달할 수 있는 기능이 없으면 사용자 지정 서비스 역할을 사용하여 유지 관리 기간에 태스크를 등록할 수 없습니다.
유지 관리 기간에 태스크를 등록할 때 실제 태스크 운영을 실행할 서비스 역할을 지정합니다. 이것은 서비스가 사용자를 대신하여 태스크를 실행할 때 수임하는 역할입니다. 그 전에 태스크 자체를 등록하려면 IAM 엔터티(예: 사용자 또는 그룹)에 IAM PassRole
정책을 할당하세요. 이를 통해 IAM 엔터티는 유지 관리 기간에 해당 태스크를 등록하는 과정에서 태스크를 실행할 때 사용해야 하는 역할을 지정할 수 있습니다. 자세한 내용은 IAM 사용 설명서에서 AWS 서비스에 역할을 전달할 사용자 권한 부여를 참조하세요.
AWS CLI를 사용하여 유지 관리 기간 태스크를 등록할 수 있는 사용자의 권한을 구성하려면
-
다음 AWS Identity and Access Management(IAM) 정책을 복사하여 텍스트 편집기에 붙여 넣은 후
mw-passrole-policy.json
이라는 이름 및 파일 확장명으로 파일을 저장합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
account-id
:role/my-maintenance-window-role
" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id
:role/" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id
:role/aws-service-role/ssm.amazonaws.com/" } ] }my-maintenance-window-role
을 앞에서 생성한 사용자 지정 유지 관리 기간 역할의 이름으로 바꿉니다.account-id
를 AWS 계정의 ID로 바꿉니다. 리소스arn:aws:iam::
에 대해 이 권한을 추가하면 그룹의 사용자가 유지 관리 기간 작업을 생성할 때 콘솔에서 고객 역할을 보고 선택할 수 있습니다.account-id
:role/arn:aws:iam::
에 대해 이 권한을 추가하면 그룹의 사용자가 유지 관리 기간 태스크를 생성할 때 콘솔에서 Systems Manager 서비스 연결 역할을 선택할 수 있습니다.account-id
:role/aws-service-role/ssm.amazonaws.com/ -
AWS CLI을 엽니다.
-
IAM 엔터티(사용자 또는 그룹)에 권한을 할당할지 여부에 따라 다음 명령 중 하나를 실행합니다.
-
IAM 엔터티의 경우:
user-name
에 유지 관리 창에 태스크를 할당할 사용자를 지정합니다.policy-name
에는 정책 식별에 사용할 이름을 지정합니다(예:my-iam-passrole-policy
).path-to-document
에는 1단계에서 저장한 파일의 경로를 지정합니다. 예:file://C:\Temp\mw-passrole-policy.json
참고
사용자가 Systems Manager 콘솔을 사용하여 유지 관리 기간에 대한 태스크를 등록할 수 있도록 액세스 권한을 부여하려면 사용자에게
AmazonSSMFullAccess
정책(또는 유지 관리 기간 태스크를 다루는 Systems Manager에 대한 더 작은 액세스 권한 집합을 제공하는 IAM 정책)도 할당해야 합니다. 다음 명령을 실행하여 사용자에게AmazonSSMFullAccess
정책을 할당합니다. -
IAM 그룹의 경우:
group-name
에 유지 관리 기간에 태스크를 할당할 멤버가 있는 그룹을 지정합니다.policy-name
에는 정책 식별에 사용할 이름을 지정합니다(예:my-iam-passrole-policy
).path-to-document
에는 1단계에서 저장한 파일의 경로를 지정합니다. 예:file://C:\Temp\mw-passrole-policy.json
참고
Systems Manager 콘솔을 사용하여 유지 관리 기간에 대한 태스크를 등록하기 위해 그룹 멤버에게 액세스 권한을 부여하려면 해당 그룹에
AmazonSSMFullAccess
정책도 할당해야 합니다. 다음 명령을 실행하여 이 정책을 그룹에 할당합니다.
-
-
다음 명령을 실행하여 그룹에 정책이 할당되었는지 확인합니다.
태스크 4: 지정된 사용자가 AWS CLI를 사용하여 유지 관리 기간 태스크를 등록하지 못하도록 방지
유지 관리 기간에 작업을 등록하지 않으려는 AWS 계정의 사용자에 대한 ssm:RegisterTaskWithMaintenanceWindow
권한을 거부할 수 있습니다. 이렇게 하면 유지 관리 기간 작업을 등록하지 않아야 하는 사용자에게 추가적인 예방 계층이 제공됩니다.
ssm:RegisterTaskWithMaintenanceWindow
권한을 개별 사용자에 대해 거부할 것인지 아니면 그룹에 대해 거부할 것인지에 따라 다음 절차 중 하나를 사용하여 사용자가 유지 관리 기간에 태스크를 등록하지 못하게 합니다.
AWS CLI를 사용하여 유지 관리 기간 태스크를 등록할 수 없는 사용자의 권한을 구성하려면
-
다음 IAM 정책을 복사하여 텍스트 편집기에 붙여 넣은 후
deny-mw-tasks-policy.json
이라는 이름 및 파일 확장명으로 파일을 저장합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
-
AWS CLI을 엽니다.
-
IAM 엔터티(사용자 또는 그룹)에 권한을 할당할지 여부에 따라 다음 명령 중 하나를 실행합니다.
-
사용자의 경우:
user-name
에는 유지 관리 기간에 태스크를 할당하지 못하도록 할 사용자를 지정합니다.policy-name
에는 정책 식별에 사용할 이름을 지정합니다(예:my-deny-mw-tasks-policy
).path-to-document
에는 1단계에서 저장한 파일의 경로를 지정합니다. 예:file://C:\Temp\deny-mw-tasks-policy.json
-
그룹의 경우:
group-name
에는 유지 관리 기간에 태스크를 할당하지 못하도록 할 그룹을 지정합니다.policy-name
에는 정책 식별에 사용할 이름을 지정합니다(예:my-deny-mw-tasks-policy
).path-to-document
에는 1단계에서 저장한 파일의 경로를 지정합니다. 예:file://C:\Temp\deny-mw-tasks-policy.json
-
-
다음 명령을 실행하여 그룹에 정책이 할당되었는지 확인합니다.