创建、更新和删除标签策略 - AWS Organizations

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

创建、更新和删除标签策略

本主题内容:
重要

未标记的资源不会在结果中显示为不合规。

创建标签策略

最小权限

要创建标签策略,您需要运行以下操作的权限:

  • organizations:CreatePolicy

您可以通过以下两种 AWS Management Console 方式之一来创建标签策略:

  • 可视化编辑器,允许您选择选项并为您生成 JSON 策略文本。

  • 文本编辑器,允许您自己直接创建 JSON 策略文本。

可视化编辑器使过程变得简单,但会限制您的灵活性。这是创建您的第一批策略并使其习惯使用的好方法。了解策略的工作原理并开始受到可视化编辑器所提供功能的限制之后,您可以通过自己编辑 JSON 策略文本将高级功能添加到策略中。可视化编辑器仅使用 @@assign 值设置运算符,不提供对子控制运算符的任何访问权限。只有在手动编辑 JSON 策略文本时,才能添加子控制运算符。

AWS Management Console
创建标签策略
  1. 登录 AWS Organizations 控制台。您必须以 IAM 用户的身份登录,担任 IAM 角色;或在组织的管理账户中以根用户的身份登录(不推荐)。

  2. Tag policies (标签策略) 页面上,选择 Create policy (创建策略)

  3. Create policy (创建策略) 页面上,输入策略的 Policy name (策略名称) 和可选 Policy description (策略说明)

  4. (可选)您可以向策略对象本身添加一个或多个标签。这些标签不是策略的一部分。为此,请选择 Add tag (添加标签),然后输入键和可选值。将值留空,设置为空字符串;它并非 null。您最多可以向策略附加 50 个标签。有关更多信息,请参阅 为 AWS Organizations 资源添加标签

  5. 您可以使用可视化编辑器构建标签策略,如此过程中所述。您也可以在 JSON 选项卡中键入或粘贴标签策略。有关标签策略语法的信息,请参阅标签策略语法

    对于 New tag key (新标签键 1),指定要添加的标签键的名称。

  6. 对于 Tag key capitalization compliance (标签键大小写合规性),请保留此选项(默认值)以指定继承的父标签策略(如果存在)应定义标签键的大小写处理。

    如果要使用此策略规定标签键的特定大写,请启用此选项。如果选择此选项,则您为 Tag Key (标签键) 指定的大小写将覆盖继承的父策略中指定的大小写处理。

    如果父策略不存在且您没有启用此选项,则仅全小写字符的标签键将被视为符合要求。有关从父策略继承的更多信息,请参阅了解管理策略继承

    提示

    在创建定义标签键及其大小写处理的标签策略时,请考虑使用示例 1:定义组织级的标签键大小写中显示的示例标签策略作为指南。将其附加到组织根。稍后,您可以创建其他标记策略并将其附加到 OU 或账户,以创建其他标记规则。

  7. 对于 Tag value compliance (标签值合规性),如果要将此标签键的允许值添加到从父策略继承的任何值,请启用此选项。

    默认情况下,将清除此选项,这意味着仅将从父策略定义和继承的这些值视为符合要求。如果父策略不存在并且您没有指定标签值,则任何值(包括没有值)都视为符合要求。

    要更新可接受的标签值列表,请选择 Specify allowed values for this tag key (为此标签键指定允许的值),然后选择 Specify values (指定值)。出现提示时,输入新值(每个框一个值)然后选择 Save changes (保存更改)

  8. 对于 Prevent noncompliant operations for this tag (防止此标签的不合规操作),我们建议您保留不选择此选项(默认设置),除非您有丰富的使用标签策略经验。请确保您已查看了解强制执行中的建议并测试技术。否则,您可能会阻止组织账户中的用户标记他们所需的资源。

    如果要强制实施此标签键的合规性,请选中该复选框,然后选择 Specify resource types (指定资源类型)。出现提示后,选择要包含在策略中的资源类型。然后选择 Save changes (保存更改)

    重要

    选择此选项后,只有在操作生成符合策略的标签时,操作指定类型资源的标签的任何操作才会成功。

  9. (可选)要向此标签策略添加另一个标签键,请选择 Add tag key (添加标签键)。然后执行步骤 6–9 来定义标签键。

  10. 完成标签策略构建后,选择 Save changes (保存更改)

AWS CLI & AWS SDKs
创建标签策略

您可以使用以下方法之一来创建标签策略:

  • AWS CLI:create-policy

    您可使用任何文本编辑器创建标签策略。使用 JSON 语法并将标签策略以任意名称和扩展名在您选择的位置另存为文件。标签策略最多可具有 2,500 个字符,包括空格。有关标签策略语法的信息,请参阅标签策略语法

    创建标签策略
    1. 在文本文件中创建类似于以下内容的标签策略:

      testpolicy.json 的内容:

      { "tags": { "CostCenter": { "tag_key": { "@@assign": "CostCenter" } } } }

      此标签策略定义 CostCenter 标签键。该标签可以接受任何值或不接受值。这样的策略意味着带有或不带值的 CostCenter 标签的资源都是合规的。

    2. 创建包含文件中策略内容的策略。为了便于阅读,输出中的额外空格已被截断。

      $ aws organizations create-policy \ --name "MyTestTagPolicy" \ --description "My Test policy" \ --content file://testpolicy.json \ --type TAG_POLICY { "Policy": { "PolicySummary": { "Id": "p-a1b2c3d4e5", "Arn": "arn:aws:organizations::123456789012:policy/o-aa111bb222/tag_policy/p-a1b2c3d4e5", "Name": "MyTestTagPolicy", "Description": "My Test policy", "Type": "TAG_POLICY", "AwsManaged": false }, "Content": "{\n\"tags\":{\n\"CostCenter\":{\n\"tag_key\":{\n\"@@assign\":\"CostCenter\"\n}\n}\n}\n}\n\n" } }
  • AWS 软件开发工具包:CreatePolicy

后续操作

创建标签策略后,您可以使标记规则生效。为此,请将策略附加到组织根目录、组织单位 (OU)、组织 AWS 账户 内部或组织实体的组合。

更新标签策略

最小权限

要更新标签策略,您必须具有运行以下操作的权限:

  • organizations:UpdatePolicy,且同一条策略语句中有一个 Resource 元素包含所指定策略的 ARN(或“*”)。

  • organizations:DescribePolicy,且同一条策略语句中有一个 Resource 元素包含所指定策略的 ARN(或“*”)。

AWS Management Console
更新标签策略
  1. 登录 AWS Organizations 控制台。您必须以 IAM 用户的身份登录,担任 IAM 角色;或在组织的管理账户中以根用户的身份登录(不推荐)。

  2. Tag policies (标签策略) 页面上,选择要更新的标签策略。

  3. 选择编辑策略

  4. 您可以输入一个新的 Policy name (策略名称)Policy description (策略说明)。您可以通过使用可视化编辑器或通过编辑 JSON 来更改策略内容。

  5. 完成更新标签策略后,选择 Save changes (保存更改)

AWS CLI & AWS SDKs
更新策略

您可以使用以下命令之一来更新策略:

  • AWS CLI:update-policy

    以下示例重命名标签策略。

    $ aws organizations update-policy \ --policy-id p-i9j8k7l6m5 \ --name "Renamed tag policy" { "Policy": { "PolicySummary": { "Id": "p-i9j8k7l6m5", "Arn": "arn:aws:organizations::123456789012:policy/o-aa111bb222/tag_policy/p-i9j8k7l6m5", "Name": "Renamed tag policy", "Type": "TAG_POLICY", "AwsManaged": false }, "Content": "{\n\"tags\":{\n\"CostCenter\":{\n\"tag_key\":{\n\"@@assign\":\"CostCenter\"\n}\n}\n}\n}\n\n" } }

    以下示例添加或更改标签策略的说明。

    $ aws organizations update-policy \ --policy-id p-i9j8k7l6m5 \ --description "My new tag policy description" { "Policy": { "PolicySummary": { "Id": "p-i9j8k7l6m5", "Arn": "arn:aws:organizations::123456789012:policy/o-aa111bb222/tag_policy/p-i9j8k7l6m5", "Name": "Renamed tag policy", "Description": "My new tag policy description", "Type": "TAG_POLICY", "AwsManaged": false }, "Content": "{\n\"tags\":{\n\"CostCenter\":{\n\"tag_key\":{\n\"@@assign\":\"CostCenter\"\n}\n}\n}\n}\n\n" } }

    以下示例更改附加到 AI 服务选择退出策略的 JSON 策略文档。在此示例中,内容取自一个名为 policy.json 的文件,使用以下文本:

    { "tags": { "Stage": { "tag_key": { "@@assign": "Stage" }, "tag_value": { "@@assign": [ "Production", "Test" ] } } } }
    $ aws organizations update-policy \ --policy-id p-i9j8k7l6m5 \ --content file://policy.json { "Policy": { "PolicySummary": { "Id": "p-i9j8k7l6m5", "Arn": "arn:aws:organizations::123456789012:policy/o-aa111bb222/tag_policy/p-i9j8k7l6m5", "Name": "Renamed tag policy", "Description": "My new tag policy description", "Type": "TAG_POLICY", "AwsManaged": false }, "Content": "{\"tags\":{\"Stage\":{\"tag_key\":{\"@@assign\":\"Stage\"},\"tag_value\":{\"@@assign\":[\"Production\",\"Test\"]},\"enforced_for\":{\"@@assign\":[\"ec2:instance\"]}}}}" }
  • AWS 软件开发工具包:UpdatePolicy

编辑附加到标记策略的标签

当您登录到组织的管理账户时,您可以添加或删除附加到标签策略的标签。为此,请完成以下步骤。

最小权限

要编辑 AWS 组织中附加到标签策略的标签,您必须具有以下权限:

  • organizations:DescribeOrganization(仅限控制台 – 导航到策略)

  • organizations:DescribePolicy(仅限控制台 – 导航到策略)

  • organizations:TagResource

  • organizations:UntagResource

AWS Management Console
编辑附加到 AI 服务选择退出策略的标签
  1. 登录 AWS Organizations 控制台。您必须以 IAM 用户的身份登录,担任 IAM 角色;或在组织的管理账户中以根用户的身份登录(不推荐)。

  2. Tag policies (标签策略) 页面上,选择带有您想要编辑的标签的策略名称。

  3. 在所选策略的详细信息页面上,选择 Tags (标签) 选项卡,然后选择 Manage tags (管理标签)

  4. 您可以在此页面上执行以下操作:

    • 编辑任何标签的值,方法是在旧标签上输入新值。您不能修改键。要更改键,您必须删除带有旧键的标签,然后添加使用新键的标签。

    • 删除任何现有的标签,方法是选择 Remove (删除)

    • 添加新的标签键和值对。选择 Add tag (添加标签),然后在提供的框中输入新的键名称和可选值。如果您将 Value (值) 框留空,则值是空字符串;它并非 null

  5. 在完成所有要进行的添加、删除和编辑操作之后,选择 Save changes (保存更改)

AWS CLI & AWS SDKs
编辑附加到标签策略的标签

您可以使用以下命令之一编辑附加到标签策略的标签:

删除标签策略

当登录到您组织的管理账户时,您可以删除您的组织中不再需要的策略。

必须先将某个策略从所有附加实体中分离,然后才能删除该策略。

最小权限

要删除标签策略,您必须具有运行以下操作的权限:

  • organizations:DeletePolicy

删除标签策略
  1. 登录 AWS Organizations 控制台。您必须以 IAM 用户的身份登录,担任 IAM 角色;或在组织的管理账户中以根用户的身份登录(不推荐)。

  2. Tag policies (标签策略) 页面选择要删除的策略。

  3. 要删除的策略必须先从所有根、OU 和账户分离。选择 Targets (目标) 选项卡,选择显示在 Targets (目标) 列表中的每个根、OU 或账户旁边的单选按钮,然后选择 Detach (分离)。在确认对话框中,选择 Detach (分离)

  4. 在页面的顶部,选择 Delete (删除)

  5. 在确认对话框上,输入策略的名称,然后选择 Delete (删除)

删除备份策略

以下代码示例演示如何使用 DeletePolicy

.NET
AWS SDK for .NET
注意

还有更多相关信息 GitHub。在 AWS 代码示例存储库中查找完整示例,了解如何进行设置和运行。

using System; using System.Threading.Tasks; using Amazon.Organizations; using Amazon.Organizations.Model; /// <summary> /// Deletes an existing AWS Organizations policy. /// </summary> public class DeletePolicy { /// <summary> /// Initializes the Organizations client object and then uses it to /// delete the policy with the specified policyId. /// </summary> public static async Task Main() { // Create the client object using the default account. IAmazonOrganizations client = new AmazonOrganizationsClient(); var policyId = "p-00000000"; var request = new DeletePolicyRequest { PolicyId = policyId, }; var response = await client.DeletePolicyAsync(request); if (response.HttpStatusCode == System.Net.HttpStatusCode.OK) { Console.WriteLine($"Successfully deleted Policy: {policyId}."); } else { Console.WriteLine($"Could not delete Policy: {policyId}."); } } }
  • 有关 API 的详细信息,请参阅 AWS SDK for .NET API 参考DeletePolicy中的。

CLI
AWS CLI

删除策略

以下示例演示如何删除组织的策略。该示例假设您之前已将策略与所有实体分离:

aws organizations delete-policy --policy-id p-examplepolicyid111
  • 有关 API 的详细信息,请参阅AWS CLI 命令参考DeletePolicy中的。

Python
SDK for Python (Boto3)
注意

还有更多相关信息 GitHub。在 AWS 代码示例存储库中查找完整示例,了解如何进行设置和运行。

def delete_policy(policy_id, orgs_client): """ Deletes a policy. :param policy_id: The ID of the policy to delete. :param orgs_client: The Boto3 Organizations client. """ try: orgs_client.delete_policy(PolicyId=policy_id) logger.info("Deleted policy %s.", policy_id) except ClientError: logger.exception("Couldn't delete policy %s.", policy_id) raise
  • 有关 API 的详细信息,请参阅适用DeletePolicyPython 的AWS SDK (Boto3) API 参考