

AWS Marketplace API 参考已重组。有关支持的 API 操作的更多信息，请参阅 [AWS Marketplace API 参考](https://docs.aws.amazon.com/marketplace/latest/APIReference/Welcome.html)。

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

# 的访问控制 AWS Marketplace Catalog API
<a name="catalog-api-access-control"></a>

您可以使用 AWS Marketplace Catalog API 来管理[私[有市场中的卖家商品 AWS Marketplace](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html)或体验](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html)。但是，首先要确保您的用户或角色可以访问您要调用的 API 功能。

使用 AWS Identity and Access Management (IAM) 创建用户和角色并分配向最终用户授予有限权限的策略。这些策略定义了用户或角色可以通过对您的资源采取的操作 AWS Marketplace Catalog API。

例如，您可以定义工程、市场营销和定价等角色。然后，您可以将组织中的用户添加到工程角色中。在该角色中，他们可能会被授予发起变更请求的权限，以发布您的卖家商品的新版本。但是，工程角色不允许用户列出所有更改集。

**注意**  
要销售商品 AWS Marketplace， AWS 账户 必须将您的账户设置为卖家账户。有关成为 AWS Marketplace 卖家的更多详情，请参阅《卖家*指南》中的AWS Marketplace 卖家*[入门](https://docs.aws.amazon.com/marketplace/latest/userguide/user-guide-for-sellers.html)。

您可以使用 AWS 托管策略，也可以创建自己的 IAM 策略，以获得比 AWS 托管策略更精细的控制。有关这些方法的详细信息，请参阅以下主题。

**Topics**
+ [允许使用以下操作操作 AWS 托管策略](#allowing-actions-with-managed-policies)
+ [允许对所有资源执行操作](#allowing-actions-on-all-resources)
+ [允许对特定资源执行操作](#allowing-actions-on-specific-resources)
+ [允许使用特定的操作 ChangeType 条件键](#allowing-actions-with-specific-changetype-condition-key)
+ [允许使用特定的操作 aws：ResourceTag 条件键](#allowing-actions-with-specific-resource-tag-condition-key)
+ [创建自定义 IAM 角色](#create-custom-role)
+ [管理资源标签](#managing-tags-on-resources)
+ [请求更改资源时管理标签](#managing-tags-when-requesting-changes-to-resources)
+ [授予管理资源标签的权限](#grant-permission-to-mange-tags-on-resources)
+ [仅当资源具有特定标签时，才授予管理这些资源的标签的权限](#grant-permission-to-manage-tags-resources-specific-tags)
+ [授予仅使用标签创建实体和更改集的权限](#grant-permission-create-entities-change-sets-tags)

## 允许使用以下操作操作 AWS 托管策略
<a name="allowing-actions-with-managed-policies"></a>

您可以使用由管理的策略 AWS 向您的用户或角色授予权限。

要处理您销售的产品 AWS Marketplace，您可以使用 `AWSMarketplaceSellerFullAccess` IAM 托管策略，该策略 AWS Marketplace Catalog API 除了拥有其他权限外，还拥有对的完全访问权限。您可以使用`AWSMarketplaceSellerProductsReadOnly`策略授予目录 API 的只读访问权限。有关更多信息，请参阅《卖家*指南》中的[控制访问](https://docs.aws.amazon.com/marketplace/latest/userguide/marketplace-management-portal-user-access.html)[权限 AWS Marketplace 管理门户、 AWS Marketplace 卖家的](https://docs.aws.amazon.com/marketplace/latest/userguide/detailed-management-portal-permissions.html)[政策和权限，以及针对 AWS Marketplace 卖家的 AWS 托管政策](https://docs.aws.amazon.com/marketplace/latest/userguide/security-iam-awsmanpol.html)。AWS Marketplace *

要管理私有市场，您可以使用 `AWSPrivateMarketplaceAdminFullAccess` IAM 托管策略，该策略拥有为您的账户或 AWS 组织创建和编辑私有市场的完全访问权限。有关更多信息，请参阅《买家*指南》中的[控制 AWS Marketplace 订阅访问权限](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-iam-users-groups-policies.html)、[创建私有市场管理员](https://docs.aws.amazon.com/marketplace/latest/buyerguide/it-administrator.html)和[面向 AWS Marketplace 买家的 AWS 托管政策](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-security-iam-awsmanpol.html)。AWS Marketplace *

或者，您可以创建自己的 IAM 策略，以获得比 AWS 托管策略更精细的控制。使用以下主题创建您自己的 IAM 策略。

## 允许对所有资源执行操作
<a name="allowing-actions-on-all-resources"></a>

资源是操作可以操作的对象。并非可以为每个操作指定每种资源类型。某些资源类型仅适用于某些操作。有关更多信息，请参阅《*服务授权参考*》中的 [“ AWS Marketplace 目录” 的操作、资源和条件密钥](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsmarketplacecatalog.html)。

目录 API 中有两种资源类型：
+ **实体**-实体是[私有市场[中的卖家产品 AWS Marketplace](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html)或体验](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html)。
+ **ChangeSet**— 每次使用目录 API 对实体进行更改时，都会返回一个更改集。变更集描述了请求的更改及其状态。如果更改集的状态为该状态，则可以取消该`PREPARING`更改集。

要允许用户或角色对中的所有实体进行更改 AWS 账户，您可以添加以下 IAM 策略。使用此策略，用户或角色可以对所有资源使用`StartChangeSet`操作 (`"*"`)。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:StartChangeSet"
      ],
      "Resource": "*"
    }
  ]
}
```

有关 Catalog API 的所有可用操作的信息，请参阅《*服务授权参考*》中的 C [AWS Marketplace atalog 的操作、资源和条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsmarketplacecatalog.html)。

## 允许对特定资源执行操作
<a name="allowing-actions-on-specific-resources"></a>

**注意**  
Resource-level 只有与 Catalog API 一起使用时，才支持`StartChangeSet`操作的权限和条件上下文密钥。与一起使用时不支持它们[AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management)。

您可以使用资源级权限来允许对特定资源进行更改，而不是允许对所有资源进行更改。

例如，您可以允许更改中的特定卖家商品， AWS 账户 而不是更改所有卖家商品。为此，您可以在 IAM 政策中指定卖家产品的亚马逊资源名称 (ARN)。`Resource`

**注意**  
要使用创建新更改集的操作指定精细的资源级权限，还需要在资源列表中包含 `ChangeSet` ARN。`ChangeSet`ARN 必须包含通配符 (`/*`)，以匹配如图所示创建的任何新更改集 ID。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:StartChangeSet"
      ],
      "Resource": [
        "arn:aws:aws-marketplace:us-east-1:{{123456789012}}:AWSMarketplace/AmiProduct/{{example1-abcd-1234-5ef6-7890abcdef12}}",
        "arn:aws:aws-marketplace:us-east-1:{{123456789012}}:AWSMarketplace/ChangeSet/*"
      ]
    }
  ]
}
```

再举一个例子，您可以允许更改私有市场中的特定体验，而不是所有体验。为此，您可以在 IAM 策略中指定体验`Resource`的 ARN。

**注意**  
要使用创建新更改集的操作指定精细的资源级权限，还需要在资源列表中包含 `ChangeSet` ARN。`ChangeSet`ARN 必须包含通配符 (`/*`)，以匹配如图所示创建的任何新更改集 ID。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:StartChangeSet"
      ],
      "Resource": [
        "arn:aws:aws-marketplace:us-east-1:{{123456789012}}:AWSMarketplace/Experience/{{exp-example12345}}",
        "arn:aws:aws-marketplace:us-east-1:{{123456789012}}:AWSMarketplace/ChangeSet/*"
      ]
    }
  ]
}
```

## 允许使用特定的操作 ChangeType 条件键
<a name="allowing-actions-with-specific-changetype-condition-key"></a>

**注意**  
Resource-level 只有与 Catalog API 一起使用时，才支持`StartChangeSet`操作的权限和条件上下文密钥。与一起使用时不支持它们[AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management)。

目录 API 操作`StartChangeSet`有几种不同的更改类型。您只能允许访问特定的更改类型。

例如，您可能只想允许更改卖家商品的元数据（例如商品名称），而不允许添加新的产品版本。在此示例中，更改类型`UpdateInformation`允许更改卖家商品的元数据，包括商品名称。有关不同变更类型的更多信息，请参阅 “参*AWS Marketplace Catalog API 考*” 中的 “[使用卖家商品](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html)” 和 “[使用私有市场](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html)”。

要将操作限制为一种或多种更改类型，请在条件键`ChangeType`中指定。在以下示例 IAM 策略中，条件运算符`StringEquals`指定只有在`ChangeType`匹配时才允许执行操作`UpdateInformation`。有关条件密钥的更多信息，请参阅 *AWS Identity and Access Management 用户指南*中的[条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。

**注意**  
要使用创建新更改集的操作指定精细的资源级权限，还需要在资源列表中包含 `ChangeSet` ARN。`ChangeSet`ARN 必须包含通配符 (`/*`)，以匹配如图所示创建的任何新更改集 ID。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:StartChangeSet"
      ],
      "Resource": [
        "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/AmiProduct/example1-abcd-1234-5ef6-7890abcdef12",
        "arn:aws:aws-marketplace:us-east-1:123456789012:AWSMarketplace/ChangeSet/*"
      ],
      "Condition": {
        "StringEquals": {
          "catalog:ChangeType": "UpdateInformation"
        }
      }
    }
  ]
}
```

## 允许使用特定的操作 aws：ResourceTag 条件键
<a name="allowing-actions-with-specific-resource-tag-condition-key"></a>

**注意**  
Resource-level 只有与 Catalog API 一起使用时，才支持`StartChangeSet`操作的权限和条件上下文密钥。与一起使用时不支持它们[AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management)。

您可以允许对一组实体执行操作，而不必不断更新策略并指定可能不断增加的实体 ARN 列表。你可以通过资源标记来做到这一点。为资源添加标签允许您根据这些资源的标签控制对这些资源的访问权限。例如，您可能希望允许描述一组卖家商品，而不必为每个卖家商品指定单独的 ARN。

例如，以下 IAM 策略允许对标签键为`product-team`且标签值为的任何实体资源 (`"*"`) `DescribeEntity` 执行操作`team-xyz`。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:DescribeEntity"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/product-team": "team-xyz"
        }
      }
    }
  ]
}
```

您还可以允许描述和取消使用特定标签创建的更改集。

例如，以下 IAM 策略允许对标签键为`DescribeChangeSet`且标签值为的任何更改集资源 (`"*"`) 执行`product-team`和`CancelChangeSet`操作`team-xyz`。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:DescribeChangeSet",
        "aws-marketplace:CancelChangeSet"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/product-team": "team-xyz"
        }
      }
    }
  ]
}
```

此外，只有当实体具有特定标签时，才允许在实体上启动更改集。例如，您可以允许更改带有特定标签的卖家商品。

例如，以下 IAM 策略允许对标签键为`product-team`且标签值为的任何实体资源 (`"*"`) `StartChangeSet` 执行操作`team-xyz`。此外，还需要`TagResource`执行该操作，以便在创建更改集时，使用相同的标签键和值对其进行标记。

**注意**  
如果您的允许`StartChangeSet`操作的策略包含与特定标签匹配的条件，则同一策略还必须包含该`TagResource`操作。这是因为策略条件必须与实体上的标签和变更请求所产生的新创建的更改集上的标签相匹配。因此，它要求用户或角色还具有标记新创建的更改集的权限。有关启动更改集并标记变更集的示例，请参见[示例：向实体添加标签并在创建过程中更改集](#example-adding-tags-entity-creation)。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:StartChangeSet",
        "aws-marketplace:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/product-team": "team-xyz"
        }
      }
    }
  ]
}
```

## 创建自定义 IAM 角色
<a name="create-custom-role"></a>

想要使用转售授权 ChangeType 或 CPPO 的客户 ChangeType需要创建自定义 AWS Identity and Access Management (IAM) 角色。这将支持创建转售授权产品生命周期。

**创建自定义 IAM 角色**

1. 登录 IAM 控制台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))。

1. 在**访问管理**下，选择**策略**。

1. 选择 **Create policy (创建策略)**。

1. 对于**步骤 1：指定权限**，

   1. 在**策略编辑器**中，选择 **JSON** 按钮，然后添加以下策略：

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

****  

      ```
      {
      "Version":"2012-10-17",		 	 	 
      	"Statement": [
      		{
      			"Sid": "AllowResaleAuthorizationShareActionsRAMCreate",
      			"Effect": "Allow",
      			"Action": [
      				"ram:CreateResourceShare",
      				"ram:AssociateResourceShare"
      			],
      			"Resource": [
      			    "arn:aws:ram:*:*:*"
      			],
      			"Condition": {
      			    "ArnLikeIfExists": {
      					"ram:ResourceArn": "arn:aws:aws-marketplace:*:*:AWSMarketplace/ResaleAuthorization/*"
      				},
      				"StringEqualsIfExists": {
      					"ram:RequestedResourceType": "aws-marketplace:Entity"
      				}
      			}
      		},
      		{
      			"Sid": "AllowResaleAuthorizationShareActionsRAMAccept",
      			"Effect": "Allow",
      			"Action": [
      				"ram:AcceptResourceShareInvitation",
      				"ram:GetResourceShareInvitations",
      				"ram:GetResourcePolicies",
      				"ram:GetResourceShareAssociations"
      			],
      			"Resource": [
      		    	"arn:aws:ram:*:*:*"
      			]
      		},
      		{
      			"Sid": "AllowResaleAuthorizationShareActionsMarketplace",
      			"Effect": "Allow",
      			"Action": [
      				"aws-marketplace:PutResourcePolicy",
      				"aws-marketplace:GetResourcePolicy",
      				"aws-marketplace:DescribeEntity"
      			],
      			"Resource": "arn:aws:aws-marketplace:*:*:AWSMarketplace/ResaleAuthorization/*"
      		}
      	]
      }
      ```

------

   1. 选择**下一步**。

1. 对于**步骤 2：查看和创建**，

   1. 有关**策略的详细信息**，请在**策略名称**FullResaleAuthorizationAccess****下输入并输入可选的**描述**。

   1. 审核**此策略中定义的权限**。

   1. 对于**添加标签**，添加标签（可选）。

   1. 选择**创建策略**。

      您已创建FullResaleAuthorizationAccess策略。

1. 在 **Access management**（访问管理）下，请选择 **Roles**（角色）。

1. 选择**创建角色**。

1. 对于**步骤 1：选择可信实体**，

   1. 对于**可信实体类型**，选择**自定义信任策略**。

   1. 将以下自定义信任策略复制粘贴到 JSON 编辑器中。

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "resale-authorization.marketplace.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
       }
      ```

------

   1. 选择**下一步**。

1. 对于**步骤 2：添加权限**，

   1. 在搜索栏中输入 **FullResaleAuthorizationAccess**。

   1. 选择**FullResaleAuthorizationAccess**权限策略，然后选择 “**下一步**”。

1. 对于**步骤 3：命名、查看和创建**，

1. 有关**角色的详细信息****FullResaleAuthorizationAccess**，请输入**角色名称**并输入可选的**描述**。

1. 在 “**步骤 1：选择可信实体**” 下，确保您选择的策略名称已附加到该角色。

1. 在 “**步骤 2：添加权限”** 下，查看**策略名称**。

1. 在**步骤 3：添加标签**下，添加标签（可选）。

1. 选择**创建角色**。

   您已创建FullResaleAuthorizationAccess角色。

## 管理资源标签
<a name="managing-tags-on-resources"></a>

您可以添加、列出和移除现有实体或更改集中的标签。

### 向资源添加标签
<a name="add-tags-to-resources"></a>

要向实体或更改集添加标签，请使用 `TagResource` API 操作。

**请求**

```
POST /TagResource HTTP/1.1
Content-type: application/json

{
  "Catalog": "AWSMarketplace",
  "ResourceArn": "string",
  "Tags": [
    {
      "Key": "string",
      "Value": "string"
    }
    ...
  ]
}
```

请求参数包括：
+ 目录（字符串）-（必填）必须是`AWSMarketplace`。
+ ResourceArn （字符串）-（必填）更改集或实体的 ARN。更改集描述了您使用目录 API 所做的更改。实体可以是[私有市场[中的卖家产品 AWS Marketplace](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html)或体验](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html)。
+ 标签（对象数组）-（必填）指定每个标签键和值的对象列表。允许的对象数量：1—50。
  + 密钥（字符串）-（必填）标签的名称。
    + 正则表达式模式 — `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`
    + 字符长度 — 1—128
  + 值（字符串）-（必填）标签的值。
    + 正则表达式模式 — `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`
    + 字符长度 — 0—256

**响应**

```
{}
```

### 从资源中删除标签
<a name="remove-tags-from-resources"></a>

要从实体或更改集中移除标签或标签列表，请使用 `UntagResource` API 操作。

**请求**

```
POST /UntagResource HTTP/1.1
Content-type: application/json

{
  "Catalog": "AWSMarketplace",
  "ResourceArn": "string",
  "TagKeys": [
    "string"
    ...
  ]
}
```

请求参数包括：
+ 目录（字符串）-（必填）必须是`AWSMarketplace`。
+ ResourceArn （字符串）-（必填）更改集或实体的 ARN。更改集描述了您使用目录 API 所做的更改。实体可以是[私有市场[中的卖家产品 AWS Marketplace](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html)或体验](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html)。
+ 标签（对象数组）-（必填）要删除的标签的键名列表。允许的字符串数量：0—256。

**响应**

```
{}
```

### 列出资源上的所有标签
<a name="list-all-tags-on-resource"></a>

要列出已添加到更改集或实体但尚未从中删除的所有标签，请使用 `ListTagsForResource` API 操作。

**请求**

```
POST /ListTagsForResource HTTP/1.1
Content-type: application/json

{
  "Catalog": "AWSMarketplace",
  "ResourceArn": "string"
}
```

请求参数包括：
+ 目录（字符串）-（必填）必须是`AWSMarketplace`。
+ ResourceArn （字符串）-（必填）更改集或实体的 ARN。更改集描述了您使用目录 API 所做的更改。实体可以是[私有市场[中的卖家产品 AWS Marketplace](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html)或体验](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html)。

**响应**

```
{
  "ResourceArn": "string",
  "Tags": [
    {
      "Key": "string",
      "Value": "string"
    }
    ...
  ]
}
```

## 请求更改资源时管理标签
<a name="managing-tags-when-requesting-changes-to-resources"></a>

您可以在创建实体或更改集时添加标签。

### 示例：在创建更改集时向更改集添加标签
<a name="example-adding-tags-creating-change-set"></a>

以下是更新卖家商品的商品元数据的`StartChangeSet`请求示例。此请求通过在`ChangeSetTags`属性中添加标记，将标签添加到通过此请求创建的更改集中。

```
POST /StartChangeSet HTTP/1.1
Content-type: application/json

{
  "Catalog": "AWSMarketplace",
  "ChangeSet": [ 
    { 
      "ChangeType":"UpdateInformation",
      "Entity": {
        "Identifier":"example1-abcd-1234-5ef6-7890abcdef12",
        "Type":"AmiProduct@1.0"
      },
      "Details": "{\"ProductTitle\":\"My updated title\"}"
    }
  ],
  "ChangeSetTags": [
    {
      "Key": "product-team",
      "Value": "team-xyz"
    }
  ]
}
```

有关管理卖家商品的更多信息，请参阅 “*AWS Marketplace Catalog API 参考*” 中的 “[处理卖家商品](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/seller-products.html)”。

### 示例：向实体添加标签并在创建过程中更改集
<a name="example-adding-tags-entity-creation"></a>

以下是创建私有市场体验实体的`StartChangeSet`请求示例。该请求通过在和`ChangeSetTags`属性中添加标签，为通过此请求创建的实体资源`EntityTags`和更改集资源添加标签。使用这些标签，可以将用户或角色的权限策略指定为仅允许描述或取消此请求创建的更改集，或者仅允许在此请求创建的实体上创建更多更改集。有关更多信息，请参阅 [授予仅使用标签创建实体和更改集的权限](#grant-permission-create-entities-change-sets-tags)。

```
POST /StartChangeSet HTTP/1.1
Content-type: application/json

{
  "Catalog": "AWSMarketplace",
  "ChangeSet": [ 
    { 
      "ChangeType": "CreateExperience",
      "Entity": { 
        "Type": "Experience@1.0"
      },
      "Details": "{\"Name\": \"ExamplePrivateMarketplace\"}",
      "EntityTags": [
        {
          "Key": "product-team",
          "Value": "team-xyz"
        }
      ]
    }
  ],
  "ChangeSetTags": [
    {
      "Key": "product-team",
      "Value": "team-xyz"
    }
  ]
}
```

有关管理私有市场的更多信息，请参阅*AWS Marketplace Catalog API 参考*资料中的[使用私有市场](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/private-marketplace.html)。

## 授予管理资源标签的权限
<a name="grant-permission-to-mange-tags-on-resources"></a>

要允许用户或角色在所有实体或更改集上添加、删除和列出标签，他们需要以下 IAM 策略。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:TagResource",
        "aws-marketplace:UntagResource",
        "aws-marketplace:ListTagsForResource"
      ],
      "Resource": "*"
    }
  ]
}
```

## 仅当资源具有特定标签时，才授予管理这些资源的标签的权限
<a name="grant-permission-to-manage-tags-resources-specific-tags"></a>

您可以允许用户或角色在具有特定标签的实体或更改集上添加、移除和列出标签。以下 IAM 策略允许对标签键为`product-team`且标签值为的任何实体资源 (`"*"`) 执行这些操作`team-xyz`。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:TagResource",
        "aws-marketplace:UntagResource",
        "aws-marketplace:ListTagsForResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/product-team": "team-xyz"
        }
      }
    }
  ]
}
```

## 授予仅使用标签创建实体和更改集的权限
<a name="grant-permission-create-entities-change-sets-tags"></a>

**注意**  
Resource-level 只有与 Catalog API 一起使用时，才支持`StartChangeSet`操作的权限和条件上下文密钥。与一起使用时不支持它们[AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management)。

您可以在创建实体或更改集时强制标记。添加以下策略以允许`StartChangeSet`和`TagResource`操作，条件是指定标签键匹配`product-team`且标签值匹配`team-xyz`。此策略条件必须与新创建的实体上的标签和根据创建请求生成的新创建的更改集上的标签相匹配。有关在创建实体时标记实体的示例，请参阅[示例：向实体添加标签并在创建过程中更改集](#example-adding-tags-entity-creation)。

对于现有实体，在请求对这些实体进行更改时，此策略还会强制对变更集进行标记。这还要求现有实体具有此现有标签。这是因为策略条件必须同时匹配现有实体上的标签和变更请求所产生的新创建的更改集。有关向变更请求添加标签的示例，请参阅[示例：在创建更改集时向更改集添加标签](#example-adding-tags-creating-change-set)。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aws-marketplace:StartChangeSet",
        "aws-marketplace:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/product-team": "team-xyz"
        }
      }
    }
  ]
}
```