

# 排除 DynamoDB 表和索引的常见 ABAC 错误
<a name="abac-troubleshooting"></a>

本主题为您在 DynamoDB 表或索引中实施 ABAC 时可能遇到的常见错误和问题提供故障排除建议。

## 策略中服务特定的条件键导致错误
<a name="abac-troubleshooting-service-specific-keys"></a>

服务特定的条件键不被视为有效的条件键。如果您在策略中使用了此类键，则会导致错误。要修复此问题，必须将服务特定的条件键替换为适当的用于在 DynamoDB 中[实施 ABAC 的条件键](attribute-based-access-control.md#condition-keys-implement-abac)。

例如，假设您在执行 [PutItem](https://docs.amazonaws.cn/amazondynamodb/latest/APIReference/API_PutItem.html) 请求的[内联策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies)中使用了 `dynamodb:ResourceTag` 条件键。想象一下，请求失败并引发 `AccessDeniedException`。以下示例显示了带有 `dynamodb:ResourceTag` 条件键的错误内联策略。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "dynamodb:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

要修复此问题，请将 `dynamodb:ResourceTag` 条件键替换为 `aws:ResourceTag`，如以下示例所示。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

## 无法选择退出 ABAC
<a name="abac-troubleshooting-unable-opt-out"></a>

如果通过 Amazon Web Services 支持 为账户启用了 ABAC，将无法通过 DynamoDB 控制台选择退出 ABAC。要选择退出，请联系 [Amazon Web Services 支持](https://console.amazonaws.cn/support)。

*仅当* 满足以下条件时，才能自行选择退出 ABAC：
+ 您使用的是[通过 DynamoDB 控制台选择加入](abac-enable-ddb.md#abac-enable-console)的自助服务方式。
+ 您将在选择加入后的七个日历日内选择退出。