

# 使用条件键限制对 CloudWatch 命名空间的访问
<a name="iam-cw-condition-keys-namespace"></a>

 使用 IAM 条件键限制用户仅在指定的 CloudWatch 命名空间中发布指标。本节提供的示例描述了如何允许和排除用户在命名空间中发布指标。

**仅允许在一个命名空间中发布**

以下策略将用户限制为仅在名为 `MyCustomNamespace` 的命名空间中发布指标。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Resource": "*",
        "Action": "cloudwatch:PutMetricData",
        "Condition": {
            "StringEquals": {
                "cloudwatch:namespace": "MyCustomNamespace"
            }
        }
    }
}
```

------

**排除从命名空间发布**

以下策略允许用户在除 `CustomNamespace2` 之外的任何命名空间中发布指标。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Resource": "*",
            "Action": "cloudwatch:PutMetricData"
        },
        {
            "Effect": "Deny",
            "Resource": "*",
            "Action": "cloudwatch:PutMetricData",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": "CustomNamespace2"
                }
            }
        }
    ]
}
```

------

**控制 OTLP 摄取**

以下策略允许用户使用 OTLP API 发布指标：

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

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Resource": "*",
            "Action": "cloudwatch:PutMetricData"
        }
    ]
}
```

------

要禁用双重摄取，即仅使用 PutMetricData 并拒绝任何 OTLP 摄取，可使用以下策略。该策略限制用户只能在 `MyCustomNamespace` 命名空间中使用 PutMetricData 发布指标，同时由于 `StringEquals` 条件，隐式拒绝任何 OTLP 摄取：

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

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                     "cloudwatch:namespace": "MyCustomNamespace"
                }
            }
         }
    ]
}
```

------

要启用双重摄取，即同时允许 PutMetricData 和 OTLP 摄取，可使用以下策略。该策略限制用户只能在名为 `MyCustomNamespace` 的命名空间中使用 PutMetricData 发布指标，同时由于 `StringEqualsIfExists` 条件，允许 OTLP 摄取：

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

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*",
            "Condition": {
                "StringEqualsIfExists": {
                     "cloudwatch:namespace": "MyCustomNamespace"
                }
            }
         }
    ]
}
```

------