

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

# IAM 정책을 사용하여 Parameter Store 파라미터에 대한 액세스 제한
<a name="sysman-paramstore-access"></a>

AWS Identity and Access Management(IAM)를 사용하여 AWS Systems Manager 파라미터에 대한 액세스를 제한합니다. 구체적으로 말하면, 다음 API 작업에 대한 액세스를 제한하는 IAM 정책을 생성합니다.
+ [DeleteParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DeleteParameter.html)
+ [DeleteParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DeleteParameters.html)
+ [DescribeParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeParameters.html)
+ [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html)
+ [GetParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameters.html)
+ [GetParameterHistory](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameterHistory.html)
+ [GetParametersByPath](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParametersByPath.html)
+ [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html)

IAM 정책을 사용하여 Systems Manager 파라미터에 대한 액세스를 제한할 때는 *제한적인* IAM 정책을 생성하고 사용하는 것이 좋습니다. 예를 들어 다음 정책을 통해 사용자는 제한된 리소스에 대한 `DescribeParameters` 및 `GetParameters` API 작업을 호출할 수 있습니다. 즉, 사용자가 `prod-*`로 시작하는 모든 파라미터를 사용하고 관련 정보를 얻을 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeParameters"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters"
            ],
            "Resource": "arn:aws:ssm:{{us-east-1}}:{{111122223333}}:parameter/prod-*"
        }
    ]
}
```

------

**중요**  
경로에 대해 액세스 권한이 있는 사용자는 해당 경로의 모든 수준에 액세스할 수 있습니다. 예를 들어 `/a` 경로에 대한 액세스 권한이 있는 사용자는 `/a/b`에도 액세스할 수 있습니다. 사용자가 IAM에서 파라미터 `/a/b`에 대한 액세스를 명시적으로 거부한 경우에도 `/a`에 대해 재귀적으로 `GetParametersByPath` API 작업을 호출하고 `/a/b`를 볼 수 있습니다.

신뢰할 수 있는 관리자에게는 다음 예와 같은 정책을 사용하여 모든 Systems Manager 파라미터 API 작업에 액세스할 수 있는 권한을 부여할 수 있습니다. 이 정책은 사용자에게 `dbserver-prod-*`로 시작하는 모든 프로덕션 파라미터에 완전히 액세스할 수 있는 권한을 제공합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter",
                "ssm:DeleteParameter",
                "ssm:GetParameterHistory",
                "ssm:GetParametersByPath",
                "ssm:GetParameters",
                "ssm:GetParameter",
                "ssm:DeleteParameters"
            ],
            "Resource": "arn:aws:ssm:{{us-east-1}}:111122223333:parameter/dbserver-prod-*"
        },
        {
            "Effect": "Allow",
            "Action": "ssm:DescribeParameters",
            "Resource": "*"
        }
    ]
}
```

------

## 권한 거부
<a name="sysman-paramstore-deny-permissions"></a>

각 API는 고유하며 개별적으로 허용하거나 거부할 수 있는 고유한 작업과 권한을 가집니다. 어떠한 정책의 명시적 거부도 허용을 무시합니다.

**참고**  
기본 AWS Key Management Service(AWS KMS) 키에는 AWS 계정 내의 모든 IAM 보안 주체에 대해 `Decrypt` 권한이 있습니다. 계정의 `SecureString` 파라미터에 대해 여러 액세스 수준을 사용하려는 경우 기본 키를 사용하지 않는 것이 좋습니다.

파라미터 값을 검색하는 모든 API 작업이 동일하게 동작하게 하려면 정책에서 `GetParameter*`와 같은 패턴을 사용합니다. 다음 예에서는 `prod-*`로 시작하는 모든 파라미터에 대해 `GetParameter`, `GetParameters`, `GetParameterHistory` 및 `GetParametersByPath`를 거부하는 방법을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:{{us-east-1}}:{{111122223333}}:parameter/prod-*"
        }
    ]
}
```

------

다음 예에서는 사용자가 `prod-*`로 시작하는 모든 파라미터에 대해 다른 명령을 수행하도록 허용하면서 일부 명령을 거부하는 방법을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ssm:PutParameter",
                "ssm:DeleteParameter",
                "ssm:DeleteParameters",
                "ssm:DescribeParameters"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParametersByPath",
                "ssm:GetParameters",
                "ssm:GetParameter",
                "ssm:GetParameterHistory"
            ],
            "Resource": "arn:aws:ssm:{{us-east-1}}:111122223333:parameter/prod-*"
        }
    ]
}
```

------

**참고**  
파라미터 기록에는 현재 파라미터를 포함하여 모든 파라미터 버전이 포함됩니다. 따라서 `GetParameter`, `GetParameters` 및 `GetParameterByPath`에 대한 사용자 권한은 거부되었지만 `GetParameterHistory`에 대한 권한은 허용된 경우 `GetParameterHistory`를 사용하여 `SecureString` 파라미터를 포함한 현재 파라미터를 볼 수 있습니다.

## 노드에서 특정 파라미터만 실행하도록 허용
<a name="sysman-paramstore-access-inst"></a>

관리형 노드에서 사용자가 지정한 파라미터만 실행할 수 있도록 액세스를 제어할 수 있습니다.

파라미터를 생성할 때 `SecureString` 파라미터 유형을 선택하면 Systems Manager가 AWS KMS를 사용하여 파라미터 값을 암호화합니다. AWS KMS는 AWS 관리형 키 또는 고객 관리형 키를 사용하여 값을 암호화합니다. AWS KMS 및 AWS KMS key에 대한 자세한 내용은 *[AWS Key Management Service Developer Guide](https://docs.aws.amazon.com/kms/latest/developerguide/)*를 참조하세요.

AWS CLI에서 다음 명령을 실행하여 AWS 관리형 키를 볼 수 있습니다.

```
aws kms describe-key --key-id alias/aws/ssm
```

다음 예에서는 노드가 `prod-`로 시작하는 파라미터에 대해서만 파라미터 값을 가져오도록 허용합니다. 파라미터가 `SecureString` 파라미터이면 노드가 AWS KMS를 사용하여 문자열을 복호화합니다.

**참고**  
앞의 예에서와 같은 인스턴스 정책이 IAM의 인스턴스 역할에 할당됩니다. 사용자 및 인스턴스에 정책을 할당하는 방법을 포함하여 Systems Manager 기능 액세스를 구성하는 방법에 대한 자세한 내용은 [Systems Manager를 사용한 EC2 인스턴스 관리](systems-manager-setting-up-ec2.md) 섹션을 참조하세요.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters"
            ],
            "Resource": [
                "arn:aws:ssm:{{us-east-1}}:111122223333:parameter/prod-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:{{us-east-1}}:111122223333:key/4914ec06-e888-4ea5-a371-5b88eEXAMPLE"
            ]
        }
    ]
}
```

------

## AWS 기본 키 및 고객 관리형 키 사용에 대한 IAM 권한
<a name="ps-kms-permissions"></a>

Parameter Store `SecureString` 파라미터는 AWS KMS 키를 사용하여 암호화되고 복호화됩니다. AWS KMS key 또는 AWS에서 제공하는 기본 KMS 키를 사용하여 `SecureString` 파라미터를 암호화하도록 선택할 수 있습니다.

고객 관리형 키를 사용하는 경우, 파라미터 또는 파라미터 경로에 대한 사용자 액세스 권한을 부여하는 IAM 정책에서 키에 대한 명시적 `kms:Encrypt` 권한을 제공해야 합니다. 예를 들어 다음 정책은 사용자가 지정된 AWS 리전 및 AWS 계정에서 `prod-`로 시작하는 `SecureString` 파라미터를 생성, 업데이트 및 확인할 수 있도록 허용합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter",
                "ssm:GetParameter",
                "ssm:GetParameters"
            ],
            "Resource": [
                "arn:aws:ssm:{{us-east-1}}:{{111122223333}}:parameter/prod-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE"
            ]
        }
    ]
}
```

------

**참고**  
지정된 고객 관리형 키를 사용하여 암호화된 고급 파라미터를 만들려면 `kms:GenerateDataKey` 권한이 필요합니다.

이와 대조적으로 고객 계정 내의 모든 사용자는 기본 AWS 관리형 키에 액세스할 수 있습니다. 이 기본 키를 사용하여 `SecureString` 파라미터를 암호화하고 사용자가 `SecureString` 파라미터로 작업하지 않도록 하려면, 다음 정책 예제와 같이 IAM 정책에서 기본 키에 대한 액세스를 명시적으로 거부해야 합니다.

**참고**  
[AWS 관리형 키](https://console.aws.amazon.com/kms/home#/kms/defaultKeys) 페이지의 AWS KMS 콘솔에서 기본 키의 Amazon 리소스 이름(ARN)을 찾을 수 있습니다. 기본 키는 **별칭(Alias)** 열에 `aws/ssm`으로 식별됩니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/abcd1234-ab12-cd34-ef56-abcdeEXAMPLE"
            ]
        }
    ]
}
```

------

계정의 `SecureString` 파라미터에 대한 세분화된 액세스 제어가 필요한 경우 고객 관리형 키를 사용하여 이러한 파라미터에 대한 액세스를 보호하고 제한해야 합니다. 또한 AWS CloudTrail를 사용하여 `SecureString` 파라미터 활동을 모니터링하는 것이 좋습니다.

자세한 내용은 다음 주제를 참조하세요.
+ *IAM 사용 설명서*의 [정책 평가 로직](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)
+ *AWS Key Management Service Developer Guide*의 [Using key policies in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)
+ *AWS CloudTrail 사용 설명서*의 [CloudTrail 이벤트 기록을 사용하여 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)