

# 在 Aurora DSQL 中使用基于资源的策略屏蔽公共访问权限
<a name="rbp-block-public-access"></a>

屏蔽公共访问权限（BPA）功能可识别并防止附加基于资源的策略，这些策略授予跨您的 AWS 账户对 Aurora DSQL 集群进行公共访问的权限。使用 BPA，您可以阻止对 Aurora DSQL 资源的公共访问。BPA 会在创建或修改基于资源的策略期间执行检查，并通过 Aurora DSQL 协助改善您的安全状况。

BPA 使用[自动推理](https://aws.amazon.com/what-is/automated-reasoning/)来分析您的基于资源的策略授予的访问权限，并且如果在管理基于资源的策略时发现此类权限，为您发送提醒。该分析可验证策略中使用的所有基于资源的策略语句、操作和条件键集的访问权限。

**重要**  
BPA 通过直接附加到 Aurora DSQL 资源（例如集群）的基于资源的策略来阻止授予公共访问权限，从而有助于保护您的资源。除了使用 BPA 之外，还要仔细检查以下策略，来确认它们不授予公有访问权限：  
附加到关联 AWS 主体（例如 IAM 角色）的基于身份的策略
附加到关联 AWS 资源 [例如 AWS Key Management Service（KMS）密钥] 的基于资源的策略

您必须确保[主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)不包含 `*` 条目，或者指定的条件键之一限制主体对资源的访问。如果基于资源的策略授予跨 AWS 对集群进行公共访问的权限，则 Aurora DSQL 将阻止您创建或修改策略，直到策略中的规范得到更正并被视为非公开为止。

您可以通过在 `Principal` 块内指定一个或多个主体来将策略设为非公有。以下基于资源的策略示例通过指定两个主体来阻止公有访问。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "123456789012",
      "111122223333"
    ]
  },
  "Action": "dsql:*",
  "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/cluster-id"
}
```

通过指定特定条件键来限制访问的策略也不被视为公有策略。除了评估基于资源的策略中指定的主体外，还使用以下[可信条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)来完成就非公有访问对基于资源的策略的评估：
+ `aws:PrincipalAccount`
+ `aws:PrincipalArn`
+ `aws:PrincipalOrgID`
+ `aws:PrincipalOrgPaths`
+ `aws:SourceAccount`
+ `aws:SourceArn`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserId`
+ `aws:PrincipalServiceName`
+ `aws:PrincipalServiceNamesList`
+ `aws:PrincipalIsAWSService`
+ `aws:Ec2InstanceSourceVpc`
+ `aws:SourceOrgID`
+ `aws:SourceOrgPaths`

此外，要将基于资源的策略设为非公有策略，Amazon 资源名称（ARN）和字符串键的值不得包含通配符或变量。如果您的基于资源的策略使用 `aws:PrincipalIsAWSService` 键，则必须确保已将键值设置为 true。

以下策略限制指定账户中的用户 `Ben` 的访问权限。该条件使 `Principal` 受限制且不被视为公有。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "*"
  },
  "Action": "dsql:*",
  "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/cluster-id",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalArn": "arn:aws:iam::123456789012:user/Ben"
    }
  }
}
```

以下基于非公有资源的策略示例使用 `StringEquals` 运算符限制 `sourceVPC`。

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "dsql:*",
      "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/cluster-id",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": [
            "vpc-91237329"
          ]
        }
      }
    }
  ]
}
```