

# CloudWatch RUM에서 리소스 기반 정책 사용
<a name="CloudWatch-RUM-resource-policies"></a>

CloudWatch RUM 앱 모니터에 리소스 정책을 연결할 수 있습니다. 기본적으로 앱 모니터에는 연결된 리소스 정책이 없습니다. CloudWatch RUM 리소스 기반 정책은 교차 계정 액세스를 지원하지 않습니다.

AWS 리소스 정책에 대해 자세히 알아보려면 [ID 기반 정책 및 리소스 기반 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)을 참조하세요.

리소스 정책 및 ID 정책 평가 방법에 대한 자세한 내용은 [정책 평가 로직](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)을 참조하세요.

IAM 정책 문법에 대한 자세한 내용은 [IAM JSON 정책 요소 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)를 참조하세요.

## 지원되는 작업
<a name="RUM-resource-policies-actions"></a>

앱 모니터의 리소스 기반 정책은 `rum:PutRumEvents` 작업을 지원합니다.

## CloudWatch RUM에서 사용하는 샘플 정책
<a name="RUM-resource-policies-samples"></a>

다음 예제에서는 SigV4 자격 증명이 없는 사람을 포함하여 누구나 앱 모니터에 데이터를 쓸 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "rum:PutRumEvents",
            "Resource": "arn:aws:rum:us-east-1:123456789012:appmonitor/app monitor name",
            "Principal": "*"
        }
    ]
}
```

------

지정된 소스 IP 주소를 차단하도록 `aws:SourceIp` 조건 키를 사용하여 정책을 수정할 수 있습니다. 이 예제에서는 이 정책을 사용하여 나열된 IP 주소의 PutRumEvents가 거부됩니다. 다른 IP 주소의 다른 요청은 모두 수락됩니다. 이 조건 키에 대한 자세한 내용은 IAM 사용 설명서의 [네트워크의 속성](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-network-properties)을 참조하세요.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "rum:PutRumEvents",
            "Resource": "arn:aws:rum:us-east-1:123456789012:appmonitor/AppMonitorName",
            "Principal": "*"
        },
        {
            "Effect": "Deny",
            "Action": "rum:PutRumEvents",
            "Resource": "arn:aws:rum:us-east-1:123456789012:appmonitor/AppMonitorName",
            "Principal": "*",
            "Condition": {
                "NotIpAddress": {
                "aws:SourceIp": "198.51.100.252"
                }
            }
        }
    ]
}
```

------

또한 `rum:alias` 서비스 컨텍스트 키를 사용하여 어떤 요청을 수락할지 제어할 수 있습니다.

웹 앱 모니터의 경우, GitHub의 [애플리케이션별 구성](https://github.com/aws-observability/aws-rum-web/blob/main/docs/configuration.md)에 설명된 대로 CloudWatch RUM 웹 클라이언트의 버전 1.20 이상을 사용하여 `Alias`를 전송하도록 웹 클라이언트를 구성해야 합니다.

모바일 앱 모니터의 경우 SDK에 따라 계측을 구성해야 합니다.
+ iOS 애플리케이션은 [AWS Distro for OpenTelemetry(ADOT) iOS SDK](https://github.com/aws-observability/aws-otel-swift)를 사용합니다.
+ Android 애플리케이션은 [AWS Distro for OpenTelemetry(ADOT) Android SDK](https://github.com/aws-observability/aws-otel-android)를 사용합니다.

다음 예제에서 리소스 정책에 따라 이벤트를 수락하려면 요청에 `alias1` 또는 `alias2`를 포함해야 합니다.

```
    {
    "Version":"2012-10-17",                   
    "Statement": [
        {
            "Sid": "AllowRUMPutEvents",
            "Effect": "Allow",
            "Action": "rum:PutRumEvents",
            "Resource": "arn:aws:rum:us-east-1:123456789012:appmonitor/MyApplication",
            "Principal": "*",
            "Condition": {
                "StringEquals": {
                    "rum:alias":["alias1", "alias2"]
                }
            }
        }
    ]
}
```