

# 将基于资源的策略与 CloudWatch RUM 结合使用
<a name="CloudWatch-RUM-resource-policies"></a>

您可以将资源策略附加到 CloudWatch RUM 应用程序监测仪。默认情况下，应用程序监测仪不会附加资源策略。基于 CloudWatch RUM 资源的策略不支持跨账户访问。

要详细了解 AWS 资源策略，请参阅[基于身份的策略和基于资源的策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)。

要详细了解如何评估资源策略和身份策略，请参阅[策略评估逻辑](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": "*"
        }
    ]
}
```

------

您可以使用 `aws:SourceIp` 条件键来修改策略，以阻止指定的源 IP 地址。在此示例中，使用此策略，将拒绝来自所列 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` 服务上下文键来控制接受哪些请求。

对于 Web 应用程序监视器，必须将 Web 客户端配置为通过版本 1.20 或更高版本的 CloudWatch RUM Web 客户端发送 `Alias`，如 GitHub 上的 [Application-specific Configurations](https://github.com/aws-observability/aws-rum-web/blob/main/docs/configuration.md) 中所述。

对于移动应用程序监视器，必须根据开发工具包配置埋点。
+ iOS 应用程序使用[适用于 OpenTelemetry 的 AWS Distro（ADOT）iOS SDK](https://github.com/aws-observability/aws-otel-swift)。
+ Android 应用程序使用[适用于 OpenTelemetry 的 AWS Distro（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"]
                }
            }
        }
    ]
}
```