Run Command 설정
AWS Systems Manager의 기능인 Run Command를 사용하여 노드를 관리하려면 먼저 명령을 실행할 사용자에 대해 AWS Identity and Access Management(IAM) 정책을 구성합니다. IAM 정책에서 SendCommand
작업에 글로벌 조건 키를 사용하는 경우 aws:ViaAWSService
조건 키를 포함하고 부울 값을 true
로 설정해야 합니다. 다음은 예입니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ssm:SendCommand"], "Resource": ["arn:aws:ssm:
region
:account
:document/YourDocument
"], "Condition": { "StringEquals": { "aws:SourceVpce": ["vpce-example1234
"] } } }, { "Effect": "Allow", "Action": ["ssm:Sendcommand"], "Resource": ["arn:aws:ssm:region
:account
:document/YourDocument
"], "Condition": { "Bool": {"aws:ViaAWSService": "true"} } } ] }
Systems Manager에 대한 노드를 구성해야 합니다. 자세한 내용은 AWS Systems Manager에 대한 관리형 노드 설정 단원을 참조하십시오.
또한 다음과 같은 선택적 설정 작업을 완료하여 관리형 노드의 보안 상태 및 일상적인 관리를 최소화하는 것이 좋습니다.
- Amazon EventBridge를 사용하여 명령 실행 모니터링
-
EventBridge를 사용하여 명령 실행 상태 변경 사항을 기록할 수 있습니다. 상태가 달라질 때마다 또는 관심이 있는 상태로 변경될 때 실행되는 규칙을 만들면 됩니다. EventBridge 이벤트가 발생할 때 Run Command를 대상 작업으로 지정할 수도 있습니다. 자세한 내용은 Systems Manager 이벤트에 대해 EventBridge 구성 단원을 참조하십시오.
- Amazon CloudWatch Logs를 사용하여 명령 실행 모니터링
-
모든 명령 출력 및 오류 로그를 정기적으로 Amazon CloudWatch 로그 그룹에 보내도록 Run Command를 구성할 수 있습니다. 거의 실시간으로 이러한 출력 로그를 모니터링하고, 특정 구문, 값 또는 패턴을 검색하며, 검색을 기반으로 경보를 생성할 수 있습니다. 자세한 내용은 Run Command에 대한 Amazon CloudWatch Logs 구성 단원을 참조하십시오.
- 특정 관리형 노드 Run Command 액세스 제한
-
AWS Identity and Access Management(IAM)을 사용하여 관리되는 노드에서 명령을 실행하는 사용자의 기능을 제한할 수 있습니다. 특히 사용자가 특정 태그에 지정된 관리형 노드에서만 명령을 실행할 수 있도록 하는 조건이 포함된 IAM 정책을 생성할 수 있습니다. 자세한 내용은 태그를 기반으로 Run Command 액세스 제한 단원을 참조하십시오.
태그를 기반으로 Run Command 액세스 제한
이 섹션에서는 IAM 정책에서 태그 조건을 지정하여 관리형 노드에서 명령을 실행하는 사용자의 기능을 제한하는 방법에 대해 설명합니다. 관리형 노드에는 Systems Manager용으로 구성된 하이브리드 및 멀티클라우드 환경의 Amazon EC2 인스턴스 및 비 EC2 노드가 포함됩니다. 정보가 명시적으로 표시되지 않지만 관리형 AWS IoT Greengrass 코어 디바이스에 대한 액세스를 제한할 수도 있습니다. 시작하려면 AWS IoT Greengrass 디바이스에 태그를 지정해야 합니다. 자세한 내용은 AWS IoT Greengrass Version 2 개발자 안내서에서 AWS IoT Greengrass Version 2 리소스 태그하기 섹션을 참조하세요.
사용자가 특정 태그에 지정된 관리형 노드에 대해서만 명령을 실행할 수 있도록 하는 조건이 포함된 IAM 정책을 생성하여 명령 실행을 특정 노드로 제한할 수 있습니다. 다음 예에서 사용자는 노드가 Finance WebServer(ssm:resourceTag/Finance: WebServer
)인 상태에서 노드(Resource: arn:aws:ec2:*:*:instance/*
)의 SSM 문서(Resource: arn:aws:ssm:*:*:document/*
)를 통해 Run Command(Effect: Allow, Action: ssm:SendCommand
)를 사용할 수 있습니다. 사용자가 태그 지정되지 않았거나 Finance: WebServer
이외의 태그가 있는 노드에 명령을 보내는 경우 실행 결과는 AccessDenied
로 표시됩니다.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:*:*:document/*" ] }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ec2:*:*:instance/*" ], "Condition":{ "StringLike":{ "ssm:resourceTag/Finance":[ "WebServers" ] } } } ] }
사용자가 여러 태그로 지정된 관리형 노드에 대해 명령을 실행하도록 허용하는 IAM 정책을 생성할 수 있습니다. 다음 정책은 두 태그를 포함하는 관리형 노드에서 사용자가 명령을 실행하도록 허용합니다. 사용자가 두 태그 모두에 지정되지 않은 노드에 명령을 전송할 경우 실행 결과가 AccessDenied
로 표시됩니다.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1" ], "ssm:resourceTag/tag_key2":[ "tag_value2" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:us-west-1::document/AWS-*", "arn:aws:ssm:us-east-2::document/AWS-*" ] }, { "Effect":"Allow", "Action":[ "ssm:UpdateInstanceInformation", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetDocument" ], "Resource":"*" } ] }
사용자가 여러 태그로 지정된 관리형 노드 그룹에 대해 명령을 실행하도록 허용하는 IAM 정책을 생성할 수도 있습니다. 다음 정책 예시는 태그 지정된 노드 그룹 중 하나 또는 두 그룹 모두에 대해 명령을 실행하도록 허용합니다.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key2":[ "tag_value2" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:us-west-1::document/AWS-*", "arn:aws:ssm:us-east-2::document/AWS-*" ] }, { "Effect":"Allow", "Action":[ "ssm:UpdateInstanceInformation", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetDocument" ], "Resource":"*" } ] }
IAM 정책 생성에 대한 자세한 내용은 IAM 사용 설명서의 관리형 정책과 인라인 정책을 참조하세요. 관리형 노드 태그 지정에 대한 자세한 내용은 AWS Resource Groups 사용 설명서의 태그 에디터를 참조하세요.