

• AWS Systems Manager CloudWatch 대시보드는 2026년 4월 30일 이후에는 더 이상 사용할 수 없습니다. 고객은 Amazon CloudWatch 콘솔을 계속 사용하여 현재와 마찬가지로 Amazon CloudWatch 대시보드를 보고, 생성하고, 관리할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 대시보드 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)를 참조하세요.

# Session Manager에 대한 추가 IAM 정책 샘플
<a name="getting-started-restrict-access-examples"></a>

다음 예제 정책을 참조하면 지원하려는 모든 Session Manager 사용자 액세스 시나리오에 대한 사용자 정의 AWS Identity and Access Management(IAM) 정책을 생성할 수 있습니다.

**Topics**
+ [예제 1: 콘솔의 문서 액세스 권한 부여](#grant-access-documents-console-example)
+ [예제 2: 특정 관리형 노드에 대한 액세스 제한](#restrict-access-example-instances)
+ [예제 3: 태그에 따라 액세스 제한](#restrict-access-example-instance-tags)
+ [예제 4: 사용자에게 자신이 시작한 세션만 종료하도록 허용](#restrict-access-example-user-sessions)
+ [예제 5: 모든 세션에 대한 전체(관리) 액세스 권한 허용](#restrict-access-example-full-access)

## 예제 1: 콘솔의 문서 액세스 권한 부여
<a name="grant-access-documents-console-example"></a>

사용자가 Session Manager 콘솔을 사용하여 세션을 시작할 때 사용자 지정 문서를 지정하도록 허용할 수 있습니다. 다음 예제 IAM 정책에서는 지정된 AWS 리전 및 AWS 계정에서 이름이 **SessionDocument-**로 시작하는 문서에 액세스하는 권한을 부여합니다.

이 정책을 사용하려면 각 *예제 리소스 자리 표시자*를 자신의 정보로 바꿉니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetDocument",
                "ssm:ListDocuments"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SessionDocument-*"
            ]
        }
    ]
}
```

------

**참고**  
Session Manager 콘솔에서는 세션 기본 설정 정의에 사용되는 `Standard_Stream`의 `sessionType`이 있는 세션 문서만 지원됩니다. 자세한 내용은 [Session 문서 스키마](session-manager-schema.md) 섹션을 참조하세요.

## 예제 2: 특정 관리형 노드에 대한 액세스 제한
<a name="restrict-access-example-instances"></a>

Session Manager로 사용자가 연결할 수 있는 관리형 노드를 정의하는 IAM 정책을 생성할 수 있습니다. 예를 들어, 다음 정책은 사용자에게 3개의 특정 노드에서 세션을 시작, 종료 및 재개할 수 있는 권한을 부여합니다. 이 정책은 사용자가 지정된 노드 이외의 노드에 연결하지 못하도록 제한합니다.

**참고**  
페더레이션 사용자의 경우 [예제 4: 사용자에게 자신이 시작한 세션만 종료하도록 허용](#restrict-access-example-user-sessions) 섹션을 참조하세요.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-1234567890EXAMPLE",
                "arn:aws:ec2:us-east-1:111122223333:instance/i-abcdefghijEXAMPLE",
                "arn:aws:ec2:us-east-1:111122223333:instance/i-0e9d8c7b6aEXAMPLE",
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       }
    ]
}
```

------

## 예제 3: 태그에 따라 액세스 제한
<a name="restrict-access-example-instance-tags"></a>

특정 태그를 기준으로 관리형 노드에 대한 액세스 권한을 제한할 수 있습니다. 다음 예제에서 사용자는 관리형 노드가 Finance WebServer(`ssm:resourceTag/Finance: WebServer`)인 상태에서 모든 관리형 노드(`Resource: arn:aws:ec2:region:987654321098:instance/*`)에 대해 세션(`Effect: Allow, Action: ssm:StartSession, ssm:ResumeSession`)을 시작하고 재개할 수 있습니다. 사용자가 태그 지정되지 않은 관리형 노드에 명령을 전송하거나 `Finance: WebServer` 이외의 태그가 있는 경우 명령 결과에 `AccessDenied`가 포함됩니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/Finance": [
                        "WebServers"
                    ]
                }
            }
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        }
    ]
}
```

------

사용자가 여러 태그로 지정된 관리형 노드에 대해 세션을 시작하도록 허용하는 IAM 정책을 생성할 수 있습니다. 다음 정책에서는 사용자가 관리형 노드에 적용된 태그를 둘 다 가지고 있는 인스턴스에 대한 세션을 시작하도록 합니다. 사용자가 두 태그 모두에 지정되지 않은 관리형 노드에 명령을 전송할 경우 명령 결과에 `AccessDenied`가 포함됩니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ssm:StartSession"
         ],
         "Resource":"*",
         "Condition":{
            "StringLike":{
               "ssm:resourceTag/tag-key1":[
                  "tag-value1"
               ],
               "ssm:resourceTag/tag-key2":[
                  "tag-value2"
               ]
            }
         }
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
      {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
      }
   ]
}
```

------

IAM 정책 생성에 대한 자세한 내용은 **IAM 사용 설명서의 [관리형 정책과 인라인 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html)을 참조하세요. 관리형 노드에 태그를 지정하는 방법에 대한 자세한 내용은 **Amazon EC2 사용 설명서에서 [Amazon EC2 리소스 태깅](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)을 참조하세요(콘텐츠는 Windows 및 Linux 관리형 노드에 적용됨). 관리형 노드에서 무단 루트 수준 명령에 대한 보안 태세를 강화하는 방법은 [SSM Agent를 통한 루트 수준 명령에 대한 액세스 제한](ssm-agent-restrict-root-level-commands.md) 섹션을 참조하세요.

## 예제 4: 사용자에게 자신이 시작한 세션만 종료하도록 허용
<a name="restrict-access-example-user-sessions"></a>

Session Manager에서는 AWS 계정의 페더레이션 사용자가 종료할 수 있는 세션을 제어하는 두 가지 방법이 제공됩니다.
+ AWS Identity and Access Management(IAM) 권한 정책에서 `{aws:userid}` 변수를 사용합니다. 페더레이션 사용자는 자신이 시작한 세션만 종료할 수 있습니다. 페더레이션되지 않은 사용자의 경우 방법 1을 사용합니다. 페더레이션된 사용자의 경우 방법 2를 사용합니다.
+ IAM 권한 정책에서 AWS 태그에서 제공하는 태그를 사용합니다. 정책에서, 사용자가 AWS에서 제공한 특정 태그로 태그 달린 세션만 종료할 수 있는 조건을 포함시킵니다. 이 방법은 페더레이션 ID를 사용하여 AWS에 대한 액세스 권한을 부여하는 계정을 포함하여 모든 계정에 작동합니다.

### 방법 1: 변수 `{aws:username}`를 사용하여 TerminateSession에 권한 부여
<a name="restrict-access-example-user-sessions-username"></a>

다음 IAM 정책은 사용자가 계정에 있는 모든 세션의 ID를 볼 수 있도록 합니다. 그러나 사용자는 자신이 시작한 세션을 통해서만 관리형 노드와 상호 작용할 수 있습니다. 다음 정책이 할당된 사용자는 다른 사용자의 세션에 연결하거나 해당 세션을 종료할 수 없습니다. 이 정책은 변수 `{aws:username}`를 사용하여 이와 같이 제한합니다.

**참고**  
이 방법은 페더레이션 ID를 사용하여 AWS에 대한 액세스 권한을 부여하는 계정에는 적용되지 않습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ssm:DescribeSessions"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        },
        {
            "Action": [
                "ssm:TerminateSession"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:username}-*"
            ]
        }
    ]
}
```

------

### 방법 2: AWS에서 제공한 태그를 사용하여 TerminateSession에 권한 부여
<a name="restrict-access-example-user-sessions-tags"></a>

IAM 정책에 조건부 태그 키 변수를 포함하여 사용자가 종료할 수 있는 세션을 제어할 수 있습니다. 조건은 사용자가 이러한 특정 태그 키 변수와 지정된 값 중 하나 또는 둘 다로 태그가 지정된 세션만 종료할 수 있도록 지정합니다.

AWS 계정의 사용자가 세션을 시작하면 Session Manager에서는 두 개의 리소스 태그를 세션에 적용합니다. 첫 번째 리소스 태그는 `aws:ssmmessages:target-id`이며, 이 태그에서는 사용자가 종료할 수 있는 대상의 ID를 지정합니다. 다른 리소스 태그는 `aws:ssmmessages:session-id`이며, `role-id:caller-specified-role-name` 형식의 값입니다.

**참고**  
Session Manager에서는 이 IAM 액세스 제어 정책에 대한 사용자 정의 태그를 지원하지 않습니다. 아래에 설명된 AWS에서 제공하는 리소스 태그를 사용해야 합니다.

 ** `aws:ssmmessages:target-id` **   
이 태그 키를 사용하여 관리형 노드 ID를 값으로 정책에 포함시킵니다. 다음 정책 블록에서, 조건문을 사용하여 사용자가 i-02573cafcfEXAMPLE 노드만 종료할 수 있습니다.    
****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                "ssm:TerminateSession"
             ],
             "Resource": "*",
             "Condition": {
                 "StringLike": {
                     "ssm:resourceTag/aws:ssmmessages:target-id": [
                        "i-02573cafcfEXAMPLE"
                     ]
                 }
             }
         }
     ]
}
```
사용자가 이 `TerminateSession` 권한이 부여되지 않은 세션을 종료하려고 시도하면 `AccessDeniedException` 오류가 발생합니다.

 ** `aws:ssmmessages:session-id` **   
이 태그 키는 세션 ID에 대한 변수를 값으로 세션 시작 요청에 포함시킵니다.  
다음 예제에서는 호출자 유형이 `User`인 경우에 대한 정책을 보여줍니다. `aws:ssmmessages:session-id`에 대해 제공하는 값은 사용자의 ID입니다. 이 예에서 `AIDIODR4TAW7CSEXAMPLE`은 AWS 계정에 있는 사용자의 ID를 나타냅니다. AWS 계정에서 사용자의 ID를 검색하려면 IAM 명령 `get-user`를 사용합니다. 자세한 내용은 *IAM User Guide*에서 AWS Identity and Access Management 섹션의 [get-user](https://docs.aws.amazon.com/IAM/latest/UserGuide/get-user.html)를 참조하세요.    
****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                "ssm:TerminateSession"
             ],
             "Resource": "*",
             "Condition": {
                 "StringLike": {
                     "ssm:resourceTag/aws:ssmmessages:session-id": [
                        "AIDIODR4TAW7CSEXAMPLE"
                     ]
                 }
             }
         }
     ]
}
```
다음 예제에서는 호출자 유형이 `AssumedRole`인 경우에 대한 정책을 보여줍니다. `aws:ssmmessages:session-id`에서 제공한 값에 `{aws:userid}` 변수를 사용할 수 있습니다. 또는 `aws:ssmmessages:session-id`에서 제공한 값에 대해 역할 ID를 하드코딩할 수 있습니다. 역할 ID를 하드코딩하는 경우 값을 `role-id:caller-specified-role-name` 형식으로 제공해야 합니다. 예를 들어 `AIDIODR4TAW7CSEXAMPLE:MyRole`입니다.  
시스템 태그를 적용하려면 제공하는 역할 ID에 다음 문자만 포함할 수 있습니다. 유니코드 문자, 0-9, 공백, `_`, `.`, `:`, `/`, `=`, `+`, `-`, `@` 및 `\`.
AWS 계정의 역할에 대한 역할 ID를 검색하려면 `get-caller-identity` 명령을 사용합니다. 자세한 내용은 AWS CLI Command Reference의 [get-caller-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html)를 참조하세요.    
****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                "ssm:TerminateSession"
             ],
             "Resource": "*",
             "Condition": {
                 "StringLike": {
                     "ssm:resourceTag/aws:ssmmessages:session-id": [
                        "${aws:userid}*"
                     ]
                 }
             }
         }
     ]
}
```
사용자가 이 `TerminateSession` 권한이 부여되지 않은 세션을 종료하려고 시도하면 `AccessDeniedException` 오류가 발생합니다.

**`aws:ssmmessages:target-id`** 및 **`aws:ssmmessages:session-id`**  
또한 이 예제에 표시된 대로 사용자가 두 시스템 태그로 태그가 지정된 세션을 종료할 수 있도록 하는 IAM 정책을 생성할 수도 있습니다.    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ssm:TerminateSession"
         ],
         "Resource":"*",
         "Condition":{
            "StringLike":{
               "ssm:resourceTag/aws:ssmmessages:target-id":[
                  "i-02573cafcfEXAMPLE"
               ],
               "ssm:resourceTag/aws:ssmmessages:session-id":[
                  "${aws:userid}*"
               ]
            }
         }
      }
   ]
}
```

## 예제 5: 모든 세션에 대한 전체(관리) 액세스 권한 허용
<a name="restrict-access-example-full-access"></a>

다음 IAM 정책은 사용자가 다른 모든 사용자가 생성한 관리형 노드 및 세션 모두와 완벽하게 상호 작용하도록 허용합니다. 이러한 권한은 조직의 Session Manager 활동을 완벽하게 제정해야 하는 관리자에게만 부여해야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession",
                "ssm:ResumeSession",
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       }
    ]
}
```

------