

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用標籤來控制對 Elastic Beanstalk 資源的存取
<a name="AWSHowTo.iam.policies.access-tags"></a>

本主題說明標籤型存取控制如何協助您建立和管理 IAM 政策。

我們可以使用 IAM 使用者政策陳述式中的條件來設定 Elastic Beanstalk 存取 資源的許可。若要進一步了解政策陳述式條件，請參閱 [Elastic Beanstalk 動作的資源與條件](AWSHowTo.iam.policies.actions.md)。在條件中使用標記是控制資源和請求的存取權限的方式之一。如需標記 Elastic Beanstalk 資源的相關資訊，請參閱[標記 Elastic Beanstalk 應用程式資源](applications-tagging-resources.md)。

設計 IAM 政策時，您可能會透過授予對特定資源的存取來設定精細許可。隨著您管理的資源數量增加，此任務變得越來越困難。標記資源並在政策陳述式條件中使用標籤，可讓此任務更輕鬆。您可以對具有特定標籤的任何資源大量授予存取。然後，您會在建立期間或之後，對相關資源重複套用此標籤。

可以將標記連接到資源或在請求中將標記傳遞至支援標記的服務。在 Elastic Beanstalk 中，資源可以擁有標籤，也有一些動作會包含標籤。建立 IAM 政策時，您可以使用標籤條件索引鍵來控制下列條件：
+ 可在環境上執行動作的使用者 (以環境擁有的標記為準)。
+ 可在動作請求中傳遞的標記。
+ 請求中是否可使用特定的標籤鍵。

關於標籤條件索引鍵的完整語法和語義，請參閱 *IAM 使用者指南*中的[使用標籤控制存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)。

## 政策中的標籤條件範例
<a name="AWSHowTo.iam.policies.access-tags.examples"></a>

以下範例示範如何指定 Elastic Beanstalk 使用者政策中的標籤條件。

**Example 1：根據請求中的標籤限制動作**  <a name="example_policy_tags.deny_by_request_tag"></a>
Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 受管使用者政策可提供使用者不受限制的許可，以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。  
以下政策會限制此能力，並拒絕未授權的使用者許可，禁止其建立 Elastic Beanstalk 生產環境。為了達到此種效果，如果該請求指定了名為 `stage` 的標記，含有 `gamma` 或 `prod` 的其中一值，其會拒絕 `CreateEnvironment` 動作。此外，該政策不允許標籤修改動作，因此無法加入相同的標籤值，也無法完全移除 `stage` 標籤，以此方式來防止未授權的使用者竄改生產環境的階段。除了受管使用者政策之外，客戶的管理員必須將此 IAM 政策連接到未授權的 IAM 使用者。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:AddTags"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/stage": ["gamma", "prod"]
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:RemoveTags"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": ["stage"]
        }
      }
    }
  ]
}
```

**Example 2：根據資源標籤限制動作**  <a name="example_policy_tags.deny_by_resource_tag"></a>
Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 受管使用者政策可提供使用者不受限制的許可，以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。  
以下政策會限制此能力，並拒絕未授權的使用者許可，禁止其在 Elastic Beanstalk 生產環境上執行動作。為了達到此種效果，如果該環境擁有名為 `stage` 的標記，含有 `gamma` 或 `prod` 的其中一值，其會拒絕特定動作。除了受管使用者政策之外，客戶的管理員必須將此 IAM 政策連接到未授權的 IAM 使用者。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:AddTags",
        "elasticbeanstalk:RemoveTags",
        "elasticbeanstalk:DescribeEnvironments",
        "elasticbeanstalk:TerminateEnvironment",
        "elasticbeanstalk:UpdateEnvironment",
        "elasticbeanstalk:ListTagsForResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/stage": ["gamma", "prod"]
        }
      }
    }
  ]
}
```

**Example 3：根據請求中的標籤允許動作**  <a name="example_policy_tags.allow_by_request_tag"></a>
下列政策會授予使用者許可來建立 Elastic Beanstalk 開發應用程式。  
若要這樣做，它會在請求指定名為 `stage` 且值為 `development` 的標籤時允許 `CreateApplication` 和 `AddTags` 動作。`aws:TagKeys` 條件可確保使用者無法新增其他標籤鍵。尤其是，其可確保 `stage` 標籤鍵區分大小寫。請注意，此政策對於未連接 Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 受管使用者政策的 IAM 使用者來說很實用。此受管政策可提供使用者不受限制的許可，以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:CreateApplication",
        "elasticbeanstalk:AddTags"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/stage": "development"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["stage"]
        }
      }
    }
  ]
}
```

**Example 4：根據資源標籤允許動作**  <a name="example_policy_tags.allow_by_resource_tag"></a>
下列政策會授予使用者對 Elastic Beanstalk 開發應用程式執行動作和取得相關資訊的許可。  
若要這樣做，它會在應用程式有名為 `stage` 且值為 `development` 的標籤時允許特定動作。`aws:TagKeys` 條件可確保使用者無法新增其他標籤鍵。尤其是，其可確保 `stage` 標籤鍵區分大小寫。請注意，此政策對於未連接 Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 受管使用者政策的 IAM 使用者來說很實用。此受管政策可提供使用者不受限制的許可，以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:UpdateApplication",
        "elasticbeanstalk:DeleteApplication",
        "elasticbeanstalk:DescribeApplications"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/stage": "development"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["stage"]
        }
      }
    }
  ]
}
```