

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon 已验证权限策略存储别名
策略存储别名

策略存储别名是策略存储的友好名称。例如，策略存储别名允许您使用`policy-store-alias/example-policy-store`而不是来引用策略存储。`PSEXAMPLEabcdefg111111`策略存储别名可用于任何接受`policyStoreId`输入参数的已验证权限操作。

您可以使用 `CreatePolicyStoreAlias` API 或使用`AWS::VerifiedPermissions::PolicyStoreAlias` CloudFormation 资源为策略存储创建策略存储别名。

Amazon Verified Permissions API 可以完全控制每个 Amazon Web Services 账户 和地区的策略存储别名。API 包括创建策略存储别名 (`CreatePolicyStoreAlias`)、查看策略存储别名和策略存储别名 ARNs (`GetPolicyStoreAlias`,`ListPolicyStoreAliases`) 以及删除策略存储别名 (`DeletePolicyStoreAlias`) 的操作。

**Topics**
+ [

## 策略存储别名的属性
](#alias-properties)
+ [

# 创建 Amazon 已验证权限策略存储别名
](policy-store-aliases-create.md)
+ [

# 正在检索 Amazon 已验证权限策略存储别名
](policy-store-aliases-retrieve.md)
+ [

# 删除 Amazon 已验证权限策略存储别名
](policy-store-aliases-delete.md)
+ [

# 使用 Amazon 已验证权限策略在 API 操作中存储别名
](policy-store-aliases-using.md)
+ [

# 控制对策略存储别名的访问权限
](policy-store-aliases-control-access.md)

## 策略存储别名的属性


亚马逊验证权限中的策略存储别名是如何运作的。

**策略存储别名是一种独立的 Amazon 资源**  
策略存储别名不是策略存储的属性。您对策略存储别名采取的操作不会影响其关联的策略存储。您可以删除策略存储别名，而不会对关联的策略存储产生任何影响。如果删除策略存储，则与该策略存储关联的所有策略存储别名也会被删除。

每个策略存储别名都有一个 Amazon 资源名称 (ARN)，用于唯一标识策略存储别名。如果您在 IAM 策略中将策略存储别名指定为资源，则该策略指的是策略存储别名，而不是关联的策略存储。

**每个策略存储别名都有两种格式**  
创建策略存储别名时，需要指定策略存储别名。Amazon 验证权限会为您创建策略存储别名 ARN。
+ 策略存储别名 ARN 是唯一标识策略存储别名的亚马逊资源名称 (ARN)。

  ```
  # Alias ARN
  arn:aws:verifiedpermissions:us-east-1:123456789012:policy-store-alias/example-policy-store
  ```
+ 策略存储别名，在 Amazon Web Services 账户 和区域中是唯一的。在 Amazon 已验证权限 API 中，策略存储区别名始终以`policy-store-alias/`为前缀。

  ```
  # Alias name
  policy-store-alias/example-policy-store
  ```

**策略存储别名不是秘密**  
策略存储别名可能会以纯文本形式显示在 CloudTrail 日志和其他输出中。不要在策略存储别名中包含机密或敏感信息。

**每个策略存储别名一次都与一个策略存储关联**  
策略存储别名及其关联的策略存储必须属于相同 Amazon Web Services 账户 和区域。您可以将策略存储别名与相同 Amazon Web Services 账户 和区域中的任何策略存储相关联。

例如，此`ListPolicyStoreAliases`输出显示`example-policy-store`策略存储别名恰好与一个目标策略存储相关联，该目标存储由`policyStoreId`属性表示。

```
{
    "aliasName": "policy-store-alias/example-policy-store",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "aliasArn": "arn:aws:verifiedpermissions:us-west-2:123456789012:policy-store-alias/example-policy-store",
    "createdAt": "2024-01-15T12:30:00.000000+00:00",
    "state": "Active"
}
```

**多个别名可以与同一个策略存储关联**  
例如，您可以将`example-policy-store`和`example-policy-store-2`别名与同一个策略存储相关联。

```
[
    {
        "aliasName": "policy-store-alias/example-policy-store",
        "policyStoreId": "PSEXAMPLEabcdefg111111",
        "aliasArn": "arn:aws:verifiedpermissions:us-west-2:123456789012:policy-store-alias/example-policy-store",
        "createdAt": "2024-01-15T12:30:00.000000+00:00",
        "state": "Active"
    },
    {
        "aliasName": "policy-store-alias/example-policy-store-2",
        "policyStoreId": "PSEXAMPLEabcdefg111111",
        "aliasArn": "arn:aws:verifiedpermissions:us-west-2:123456789012:policy-store-alias/example-policy-store-2",
        "createdAt": "2024-01-16T09:15:00.000000+00:00",
        "state": "Active"
    }
]
```

**策略存储区别名在 Amazon Web Services 账户 和区域中必须是唯一的**  
例如，您只能有一个策略存储别名，每个别名分别为 `example-policy-store` “区域” Amazon Web Services 账户 和 “区域”。策略存储区别名区分大小写。您无法更改策略存储别名。但是，在 24 小时预留期到期后，您可以删除策略存储别名并使用所需名称创建新的策略存储别名。

您可以在不同的区域中创建具有相同名称的策略存储别名。每个策略存储区别名都将有一个唯一的 ARN。如果您的代码引用策略存储别名（例如）`policy-store-alias/example-policy-store`，则可以在多个区域中运行它。在每个区域，它使用不同的策略存储。

**策略存储别名被软删除**  
删除策略存储别名后，策略存储别名将保留 24 小时。如果您在此期间尝试创建具有相同名称的策略存储别名，则该请求将被拒绝。在此期间，`GetPolicyStoreAlias`返回带有`PendingDeletion`状态的策略存储别名。

**您可以使用别名来识别策略存储**  
在所有接受`policyStoreId`（例如`IsAuthorized`）的操作中，您可以使用策略存储别名来标识策略存储。在这种情况下，策略存储别名必须以为前缀`policy-store-alias/`。策略存储别名不能用于为`DeletePolicyStore`操作标识策略存储。

您不能使用策略存储别名或策略存储别名 ARN 来标识 IAM 策略`Resource`元素中的策略存储。要在通过策略存储别名引用策略存储时控制对策略存储的访问权限，请参阅[控制对策略存储别名的访问权限](policy-store-aliases-control-access.md)。

# 创建 Amazon 已验证权限策略存储别名
创建策略存储别名

您可以使用友好名称创建策略存储别名来引用策略存储。每个 Amazon Web Services 账户 区域的策略存储别名必须是唯一的。策略存储别名只能与策略存储别名属于相同且处于相同区域 Amazon Web Services 账户 且处于活动状态的策略存储相关联。策略存储别名是独立的资源，拥有自己的权限 ARNs 和 IAM 授权。

默认情况下，只有 10 个策略存储别名可以与同一个策略存储关联。

**注意**  
`CreatePolicyStoreAlias`是等性的。如果您使用与现有策略存储别名匹配的策略存储别名和策略存储 ID 调用该`CreatePolicyStoreAlias`操作，则操作成功并返回现有的策略存储别名。`CreatePolicyStoreAlias`但是，如果您使用现有的策略存储别名但使用不同的策略存储 ID 调用该`CreatePolicyStoreAlias`操作，则该操作将返回`ConflictException`。

------
#### [ Amazon CLI ]

**创建策略存储别名**  
您可以使用[CreatePolicyStoreAlias](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_CreatePolicyStoreAlias.html)操作创建策略存储别名。以下示例使用名称创建策略存储别名`example-policy-store`。

```
$ aws verifiedpermissions create-policy-store-alias \
    --alias-name policy-store-alias/example-policy-store \
    --policy-store-id PSEXAMPLEabcdefg111111
{
    "aliasName": "policy-store-alias/example-policy-store",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "aliasArn": "arn:aws:verifiedpermissions:us-west-2:123456789012:policy-store-alias/example-policy-store",
    "createdAt": "2024-01-15T12:30:00.000000+00:00"
}
```

------

# 正在检索 Amazon 已验证权限策略存储别名
检索策略存储别名

您可以使用`GetPolicyStoreAlias`操作来获取有关特定策略存储别名的详细信息，或者使用列出您 Amazon Web Services 账户 和区域中所有策略存储别名的`ListPolicyStoreAliases`操作，来检索有关策略存储别名的信息。

## 获取策略存储别名


使用该`GetPolicyStoreAlias`操作检索有关特定策略存储别名的详细信息，包括关联的策略存储 ID。

------
#### [ Amazon CLI ]

**检索有关策略存储别名的详细信息**  
您可以使用[GetPolicyStoreAlias](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_GetPolicyStoreAlias.html)操作检索策略存储别名。以下示例检索名称为的策略存储别名的`example-policy-store`详细信息。

```
$ aws verifiedpermissions get-policy-store-alias \
    --alias-name policy-store-alias/example-policy-store
{
    "aliasName": "policy-store-alias/example-policy-store",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "aliasArn": "arn:aws:verifiedpermissions:us-west-2:123456789012:policy-store-alias/example-policy-store",
    "createdAt": "2024-01-15T12:30:00.000000+00:00",
    "state": "Active"
}
```

------

## 商品政策商店别名


使用`ListPolicyStoreAliases`操作列出您 Amazon Web Services 账户 和区域中的所有策略存储别名。您可以使用`filter`参数仅列出与特定策略存储关联的策略存储别名。

------
#### [ Amazon CLI ]

**列出所有策略存储别名**  
您可以使用[ListPolicyStoreAliases](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_ListPolicyStoreAliases.html)操作列出策略存储别名。以下示例列出了 us-west-2 区域中 1234567890 Amazon Web Services 账户 12 拥有的所有策略存储别名。

```
$ aws verifiedpermissions list-policy-store-aliases
{
    "policyStoreAliases": [
        {
            "aliasName": "policy-store-alias/example-policy-store",
            "policyStoreId": "PSEXAMPLEabcdefg111111",
            "aliasArn": "arn:aws:verifiedpermissions:us-west-2:123456789012:policy-store-alias/example-policy-store",
            "createdAt": "2024-01-15T12:30:00.000000+00:00",
            "state": "Active"
        },
        {
            "aliasName": "policy-store-alias/example-policy-store-2",
            "policyStoreId": "PSEXAMPLEabcdefg111111",
            "aliasArn": "arn:aws:verifiedpermissions:us-west-2:123456789012:policy-store-alias/example-policy-store-2",
            "createdAt": "2024-01-16T09:15:00.000000+00:00",
            "state": "Active"
        },
        {
            "aliasName": "policy-store-alias/example-policy-store-3",
            "policyStoreId": "PSEXAMPLEabcdefg222222",
            "aliasArn": "arn:aws:verifiedpermissions:us-west-2:123456789012:policy-store-alias/example-policy-store-3",
            "createdAt": "2024-01-17T14:45:00.000000+00:00",
            "state": "Active"
        }
    ]
}
```

**列出特定策略存储的策略存储别名**  
使用`filter`参数仅列出与特定策略存储关联的别名。

```
$ aws verifiedpermissions list-policy-store-aliases \
    --filter '{"policyStoreId": "PSEXAMPLEabcdefg111111"}'
{
    "policyStoreAliases": [
        {
            "aliasName": "policy-store-alias/example-policy-store",
            "policyStoreId": "PSEXAMPLEabcdefg111111",
            "aliasArn": "arn:aws:verifiedpermissions:us-west-2:123456789012:policy-store-alias/example-policy-store",
            "createdAt": "2024-01-15T12:30:00.000000+00:00",
            "state": "Active"
        },
        {
            "aliasName": "policy-store-alias/example-policy-store-2",
            "policyStoreId": "PSEXAMPLEabcdefg111111",
            "aliasArn": "arn:aws:verifiedpermissions:us-west-2:123456789012:policy-store-alias/example-policy-store-2",
            "createdAt": "2024-01-16T09:15:00.000000+00:00",
            "state": "Active"
        }
    ]
}
```

------

# 删除 Amazon 已验证权限策略存储别名
删除策略存储别名

当不再需要策略存储别名时，可以将其删除。删除策略存储别名不会影响关联的策略存储。删除策略存储会删除与该策略存储关联的所有策略存储别名。

删除策略存储别名后，策略存储别名将保留 24 小时，在此期间不可重复使用。

------
#### [ Amazon CLI ]

**删除策略存储别名**  
您可以使用[DeletePolicyStoreAlias](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_DeletePolicyStoreAlias.html)操作删除策略存储别名。以下示例删除名称为的策略存储别名`example-policy-store`。

```
$ aws verifiedpermissions delete-policy-store-alias \
    --alias-name policy-store-alias/example-policy-store
```

------

# 使用 Amazon 已验证权限策略在 API 操作中存储别名
使用策略存储别名

任何接受`policyStoreId`参数（例如、和 [GetPolicyStore](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_GetPolicyStore.html)）的 Amazon Verified Permissions 操作都可以接受策略存储别名来代替策略存储 ID。[IsAuthorized[IsAuthorizedWithToken](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_IsAuthorizedWithToken.html)](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_IsAuthorized.html)

**重要**  
使用策略存储别名作为`policyStoreId`参数值时，必须包含前`policy-store-alias/`缀。例如，使用`policy-store-alias/example-policy-store`，不是`example-policy-store`。

## 在操作中使用策略存储别名


以下`IsAuthorized`命令使用名为的策略存储别名`example-policy-store`来标识策略存储。

------
#### [ Amazon CLI ]

```
$ aws verifiedpermissions is-authorized \
    --policy-store-id policy-store-alias/example-policy-store \
    --principal entityType=User,entityId=alice \
    --action actionType=Action,actionId=view \
    --resource entityType=Photo,entityId=photo123
```

------

**注意**  
您不能使用策略存储别名来代替该[DeletePolicyStore](https://docs.amazonaws.cn/verifiedpermissions/latest/apireference/API_DeletePolicyStore.html)操作的`policyStoreId`字段。

## 跨使用策略存储别名 Amazon Web Services 区域


别名的最强大用途之一是在多个 Amazon Web Services 区域中运行的应用程序中。例如，您可能有一个全球应用程序，该应用程序在每个区域中使用不同的策略存储。
+ 在 us-east-1 中，你想使用。`PSEXAMPLEabcdefg111111`
+ 在 eu-west-1 中，你想使用。`PSEXAMPLEabcdefg222222`

您可以在每个区域创建不同版本的应用程序，也可以使用字典或 switch 语句为每个区域选择正确的策略存储。但是，在每个区域中创建具有相同策略存储别名的策略存储别名要容易得多。请记住，策略存储别名区分大小写。

------
#### [ Amazon CLI ]

```
$ aws --region us-east-1 verifiedpermissions create-policy-store-alias \
    --alias-name policy-store-alias/my-app \
    --policy-store-id PSEXAMPLEabcdefg111111

$ aws --region eu-west-1 verifiedpermissions create-policy-store-alias \
    --alias-name policy-store-alias/my-app \
    --policy-store-id PSEXAMPLEabcdefg222222
```

------

然后，在代码中使用策略存储别名。当您的代码在每个区域运行时，策略存储别名将引用其在该区域中的关联策略存储。

------
#### [ Amazon CLI ]

```
$ aws verifiedpermissions is-authorized \
    --policy-store-id policy-store-alias/my-app \
    --principal entityType=User,entityId=alice \
    --action actionType=Action,actionId=view \
    --resource entityType=Photo,entityId=photo123
```

------

但是，存在策略存储别名被删除的风险。在这种情况下，应用程序尝试使用策略存储别名将失败，您可能需要重新创建或更新策略存储别名。要降低这种风险，请谨慎地授予委托人管理您在应用程序中使用的策略存储别名的权限。

# 控制对策略存储别名的访问权限
控制访问权限

管理策略存储别名的委托人必须有权与这些策略存储别名进行交互，对于某些操作，还必须有权与策略存储别名关联的策略存储进行交互。您可以使用 IAM 策略提供这些权限。

以下各节描述了创建和管理策略存储别名所需的权限。

## 已验证权限：CreatePolicyStoreAlias


要创建策略存储别名，委托人需要对策略存储别名和关联的策略存储都具有以下权限。
+ `verifiedpermissions:CreatePolicyStoreAlias`用于策略存储别名。在附加到允许创建 IAM 策略存储别名的委托人的策略中提供此权限。

  以下示例策略语句在`Resource`元素中指定了特定的策略存储别名。但是您可以列出多个策略存储别名 ARNs 或指定策略存储别名模式，例如`"sample*"`。您也可以将`Resource`值指定为`"*"`以允许委托人在 Amazon Web Services 账户 和区域中创建任何策略存储别名。

  ```
  {
    "Sid": "IAMPolicyForCreateAlias",
    "Effect": "Allow",
    "Action": "verifiedpermissions:CreatePolicyStoreAlias",
    "Resource": "arn:aws:verifiedpermissions:us-east-1:123456789012:policy-store-alias/example-policy-store"
  }
  ```
+ `verifiedpermissions:CreatePolicyStoreAlias`用于关联的策略存储。此权限必须在 IAM 策略中提供。

  ```
  {
    "Sid": "PolicyStorePermissionForAlias",
    "Effect": "Allow",
    "Action": "verifiedpermissions:CreatePolicyStoreAlias",
    "Resource": "arn:aws:verifiedpermissions::123456789012:policy-store/PSEXAMPLEabcdefg111111"
  }
  ```

## 已验证权限：GetPolicyStoreAlias


要获取有关特定策略存储别名的详细信息，委托人必须拥有策略中策略存储别名的`verifiedpermissions:GetPolicyStoreAlias`权限。 IAM 

以下示例策略声明向委托人授予获取特定策略存储别名的权限。

```
{
  "Sid": "IAMPolicyForGetAlias",
  "Effect": "Allow",
  "Action": "verifiedpermissions:GetPolicyStoreAlias",
  "Resource": "arn:aws:verifiedpermissions:us-east-1:123456789012:policy-store-alias/example-policy-store"
}
```

## 已验证权限：ListPolicyStoreAliases


要在 Amazon Web Services 账户 和区域中列出策略存储别名，委托人必须拥有 IAM 策略中的`verifiedpermissions:ListPolicyStoreAliases`权限。由于此策略与任何特定的策略存储或策略存储别名资源无关，因此策略中资源元素的值必须为`"*"`。

例如，以下 IAM 策略声明授予委托人列出中所有策略存储别名的权限。 Amazon Web Services 账户

```
{
  "Sid": "IAMPolicyForListingAliases",
  "Effect": "Allow",
  "Action": "verifiedpermissions:ListPolicyStoreAliases",
  "Resource": "*"
}
```

## 已验证权限：DeletePolicyStoreAlias


要删除策略存储别名，委托人只需要拥有策略存储别名的权限。

**注意**  
删除策略存储别名不会对关联的策略存储产生任何影响，但引用该策略存储别名的应用程序会收到错误。如果您错误地删除了策略存储别名，则可以在 24 小时预留期之后重新创建该别名。

委托人需要`verifiedpermissions:DeletePolicyStoreAlias`获得策略存储别名的权限。在附加到允许删除 IAM 策略存储别名的委托人的策略中提供此权限。

以下示例策略语句在`Resource`元素中指定了策略存储别名。但是您可以列出多个策略存储别名 ARNs 或指定策略存储别名模式，例如`"sample*"`。您也可以将`Resource`值指定为`"*"`以允许委托人删除 Amazon Web Services 账户 和区域中的任何策略存储别名。

```
{
  "Sid": "IAMPolicyForDeleteAlias",
  "Effect": "Allow",
  "Action": "verifiedpermissions:DeletePolicyStoreAlias",
  "Resource": "arn:aws:verifiedpermissions:us-east-1:123456789012:policy-store-alias/example-policy-store"
}
```

## 限制策略存储别名权限


在任何接受`policyStoreId`字段作为输入的操作中，您可以使用策略存储别名来引用策略存储。当您这样做时，Amazon Verified Permissions 会`verifiedpermissions:GetPolicyStoreAlias`针对策略存储区别名和对关联的策略存储进行请求的操作进行授权。

例如，如果使用策略存储别名执行`IsAuthorized`操作，则委托人需要两者：
+ `verifiedpermissions:GetPolicyStoreAlias`策略存储别名的权限
+ `verifiedpermissions:IsAuthorized`关联策略存储的权限

以下示例策略授予`IsAuthorized`使用特定策略存储别名进行呼叫的权限。

```
{
  "Sid": "IAMPolicyForAliasUsage",
  "Effect": "Allow",
  "Action": "verifiedpermissions:GetPolicyStoreAlias",
  "Resource": "arn:aws:verifiedpermissions:us-east-1:123456789012:policy-store-alias/example-policy-store"
},
{
  "Sid": "IAMPolicyForPolicyStoreOperation",
  "Effect": "Allow",
  "Action": "verifiedpermissions:IsAuthorized",
  "Resource": "arn:aws:verifiedpermissions::123456789012:policy-store/PSEXAMPLEabcdefg111111"
}
```

要限制委托人可以使用的策略存储别名，请限制`verifiedpermissions:GetPolicyStoreAlias`权限。例如，以下策略允许委托人使用任何策略存储别名，但以开头的别名除外`Restricted`。

```
{
  "Sid": "IAMPolicyForAliasAllow",
  "Effect": "Allow",
  "Action": "verifiedpermissions:GetPolicyStoreAlias",
  "Resource": "arn:aws:verifiedpermissions:us-east-1:123456789012:policy-store-alias/*"
},
{
  "Sid": "IAMPolicyForAliasDeny",
  "Effect": "Deny",
  "Action": "verifiedpermissions:GetPolicyStoreAlias",
  "Resource": "arn:aws:verifiedpermissions:us-east-1:123456789012:policy-store-alias/Restricted*"
}
```