Session Manager에 대한 샘플 IAM 정책 - AWS Systems Manager

Session Manager에 대한 샘플 IAM 정책

이 섹션에 나오는 샘플은 Session Manager 액세스에 가장 일반적으로 필요한 권한을 제공하는 AWS Identity and Access Management(IAM) 정책을 생성하는 데 유용합니다.

참고

또한 AWS KMS key 정책을 사용하면 KMS 키에 대한 액세스 권한이 부여될 IAM 엔터티(사용자 또는 역할) 및 AWS 계정를 제어할 수 있습니다. 자세한 내용은 AWS Key Management Service Developer GuideOverview of Managing Access to Your AWS KMS ResourcesUsing Key Policies in AWS KMS를 참조하세요.

Session Manager에 대한 빠른 시작 최종 사용자 정책

다음 예를 사용하여 Session Manager에 대한 IAM 최종 사용자 정책을 생성합니다.

사용자가 Session Manager 콘솔과 AWS Command Line Interface(AWS CLI)에서만, Amazon Elastic Compute Cloud(Amazon EC2) 콘솔에서만 또는 세 가지 모두에서 세션을 시작할 수 있도록 허용하는 정책을 생성할 수 있습니다.

이러한 정책은 최종 사용자에게 특정 관리형 노드에 대한 세션을 시작할 수 있는 권한과 자신의 세션만 종료할 수 있는 권한을 제공합니다. 정책에 대해 수행하려는 사용자 지정에 대한 예는 Session Manager에 대한 추가 IAM 정책 샘플 섹션을 참조하세요.

다음 샘플 정책에서 각 리소스 자리 표시자 예를 자신의 정보로 바꿉니다.

다음 탭에서 선택하여 제공할 세션 액세스 범위에 대한 샘플 정책을 확인합니다.

세션 관리자 and Fleet Manager

사용자에게 Session Manager 콘솔과 Fleet Manager에서만 세션을 시작하고 재개할 수 있는 권한을 제공하려면 이 샘플 정책을 사용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:region:account-id:instance/instance-id", "arn:aws:ssm:region:account-id:document/SSM-SessionManagerRunShell" Footnote callout 1 to explain a line in a JSON policy ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" Footnote callout 2 to explain a line in a JSON policy } } }, { "Effect": "Allow", "Action": [ "ssm:DescribeSessions", "ssm:GetConnectionStatus", "ssm:DescribeInstanceProperties", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" Footnote callout 3 to explain a line in a JSON policy ], "Resource": "key-name" } ] }
Amazon EC2

사용자에게 Amazon EC2 콘솔에서만 세션을 시작하고 재개할 수 있는 권한을 제공하려면 이 샘플 정책을 사용합니다. 이 정책은 Session Manager 콘솔과 AWS CLI에서 세션을 시작하는 데 필요한 모든 권한을 제공하지 않습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:SendCommand" Footnote callout 4 to explain a line in a JSON policy ], "Resource": [ "arn:aws:ec2:region:account-id:instance/instance-id", "arn:aws:ssm:region:account-id:document/SSM-SessionManagerRunShell" Footnote callout 1 to explain a line in a JSON policy ] }, { "Effect": "Allow", "Action": [ "ssm:GetConnectionStatus", "ssm:DescribeInstanceInformation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }
AWS CLI

사용자에게 AWS CLI에서만 세션을 시작하고 재개할 수 있는 권한을 제공하려면 이 샘플 정책을 사용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:SendCommand" Footnote callout 4 to explain a line in a JSON policy ], "Resource": [ "arn:aws:ec2:region:account-id:instance/instance-id", "arn:aws:ssm:region:account-id:document/SSM-SessionManagerRunShell" Footnote callout 1 to explain a line in a JSON policy ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" Footnote callout 2 to explain a line in a JSON policy } } }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" Footnote callout 3 to explain a line in a JSON policy ], "Resource": "key-name" } ] }

1 SSM-SessionManagerRunShell은 Session Manager에서 세션 구성 설정을 저장할 목적으로 생성되는 SSM 문서의 기본 이름입니다. 그 밖에 사용자 정의 Session 문서를 생성한 후 정책에서 지정할 수도 있습니다. 또한 AWS에서 제공하는 문서인 AWS-StartSSHSession을 SSH로 세션을 시작하는 사용자에게 지정하는 방법도 있습니다. SSH로 세션을 지원하는 데 필요한 구성 단계에 대한 자세한 내용은 (선택 사항) Session Manager를 통한 SSH 연결에 대한 권한 허용 및 제어를 참조하세요.

2 조건 요소 ssm:SessionDocumentAccessChecktrue로 지정한 경우 시스템은 세션을 설정하기 전에 이 예제 SSM-SessionManagerRunShell에서 정의된 Session 문서에 사용자가 명시적으로 액세스할 수 있는지 확인합니다. 자세한 내용은 세션을 시작할 때 세션 문서 권한 확인 적용 단원을 참조하십시오.

3 kms:GenerateDataKey 권한을 사용하면 세션 데이터를 암호화하는 데 사용할 데이터 암호화 키를 생성할 수 있습니다. 세션 데이터에 AWS Key Management Service(AWS KMS) 암호화를 사용하는 경우 key-namearn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE 형식으로 사용하려는 KMS 키의 Amazon 리소스 이름(ARN)으로 바꿉니다. 세션 데이터에 KMS 키 암호화를 사용하지 않으려면 정책에서 다음 콘텐츠를 제거합니다.

, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "key-name" }

세션 데이터 암호화에 AWS KMS 사용에 대한 내용은 세션 데이터의 KMS 키 암호화를 설정하려면(콘솔) 섹션을 참조하세요.

4 사용자가 Amazon EC2 콘솔에서 세션을 시작하려고 시도하는 경우 SendCommand에 대한 권한이 필요하지만, 먼저 Session Manager에 필요한 최소 버전으로 SSM Agent를 업데이트해야 합니다. Run Command를 사용하여 에이전트를 업데이트하라는 명령을 인스턴스에 전달합니다.

Session Manager에 대한 빠른 시작 관리자 정책

다음 예를 사용하여 Session Manager에 대한 IAM 관리자 정책을 생성합니다.

이러한 정책은 관리자에게 Key=Finance,Value=WebServers로 태그가 지정된 관리형 노드에 대한 세션을 시작하는 권한, 기본 설정을 생성, 업데이트 및 삭제하는 권한, 자신의 세션만 종료할 수 있는 권한을 제공합니다. 정책에 대해 수행하려는 사용자 지정에 대한 예는 Session Manager에 대한 추가 IAM 정책 샘플 섹션을 참조하세요.

관리자가 Session Manager 콘솔과 AWS CLI에서만, Amazon EC2 콘솔에서만 또는 세 가지 모두에서 이러한 태스크를 수행할 수 있도록 허용하는 정책을 생성할 수 있습니다.

다음 샘플 정책에서 각 리소스 자리 표시자 예를 자신의 정보로 바꿉니다.

지원하려는 액세스 시나리오에 대한 샘플 정책을 보려면 다음 탭에서 선택하십시오.

세션 관리자 and CLI

관리자에게 Session Manager 콘솔과 AWS CLI에서만 세션 관련 태스크를 수행할 수 있는 권한을 제공하려면 이 샘플 정책을 사용합니다. 이 정책은 Amazon EC2 콘솔에서 세션 관련 태스크를 수행하는 데 필요한 모든 권한을 제공하지 않습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:region:account-id:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/Finance": [ "WebServers" ] } } }, { "Effect": "Allow", "Action": [ "ssm:DescribeSessions", "ssm:GetConnectionStatus", "ssm:DescribeInstanceProperties", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:CreateDocument", "ssm:UpdateDocument", "ssm:GetDocument", "ssm:StartSession" ], "Resource": "arn:aws:ssm:region:account-id:document/SSM-SessionManagerRunShell" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }
Amazon EC2

관리자에게 Amazon EC2 콘솔에서만 세션 관련 태스크를 수행할 수 있는 권한을 제공하려면 이 샘플 정책을 사용합니다. 이 정책은 Session Manager 콘솔 및 AWS CLI에서 세션 관련 작업을 수행하는 데 필요한 모든 권한을 제공하지 않습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:SendCommand" Footnote callout 1 to explain a line in a JSON policy ], "Resource": [ "arn:aws:ec2:region:account-id:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/tag-key": [ "tag-value" ] } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:region:account-id:document/SSM-SessionManagerRunShell" ] }, { "Effect": "Allow", "Action": [ "ssm:GetConnectionStatus", "ssm:DescribeInstanceInformation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }
세션 관리자, CLI, and Amazon EC2

관리자에게 Session Manager 콘솔, AWS CLI 및 Amazon EC2 콘솔에서 세션 관련 태스크를 수행할 수 있는 권한을 제공하려면 이 샘플 정책을 사용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:SendCommand" Footnote callout 1 to explain a line in a JSON policy ], "Resource": [ "arn:aws:ec2:region:account-id:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/tag-key": [ "tag-value" ] } } }, { "Effect": "Allow", "Action": [ "ssm:DescribeSessions", "ssm:GetConnectionStatus", "ssm:DescribeInstanceInformation", "ssm:DescribeInstanceProperties", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:CreateDocument", "ssm:UpdateDocument", "ssm:GetDocument", "ssm:StartSession" ], "Resource": "arn:aws:ssm:region:account-id:document/SSM-SessionManagerRunShell" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }

1 사용자가 Amazon EC2 콘솔에서 세션을 시작하려고 하는 경우 SendCommand에 대한 권한이 필요하지만 먼저 SSM Agent를 업데이트하도록 명령을 보내야 합니다.