

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

# 管理 Elastic Beanstalk 使用者政策
<a name="AWSHowTo.iam.managed-policies"></a>

AWS Elastic Beanstalk 提供兩種受管政策，可讓您指派 Elastic Beanstalk 管理之所有資源的完整存取權或唯讀存取權。您可以將政策連接至 AWS Identity and Access Management (IAM) 使用者或群組，或連接至使用者擔任的角色。

**受管使用者政策**
+ **AdministratorAccess-AWSElasticBeanstalk** – 授予使用者完全的管理許可，可建立、修改及刪除 Elastic Beanstalk 應用程式、應用程式版本、組態設定、環境及其基礎資源。若要檢視受管理的政策內容，請參閱*《AWS 受管政策參考指南》*中的 [AdministratorAccess-AWSElasticBeanstalk](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess-AWSElasticBeanstalk.html) 頁面。
+ **AWSElasticBeanstalkReadOnly** – 允許使用者檢視應用程式與環境，但無法對其執行修改操作。它可讓您唯讀存取所有 Elastic Beanstalk 資源，以及 Elastic Beanstalk 主控台擷取的其他 AWS 資源。請注意，唯讀存取不會啟用諸如下載 Elastic Beanstalk 日誌供您讀取等動作。這是因為日誌暫存在 Amazon S3 儲存貯體，其中 Elastic Beanstalk 需要寫入許可。請參閱本主題結尾的範例，了解如何啟用 Elastic Beanstalk 日誌的存取。若要檢視受管理的政策內容，請參閱*AWS 《受管政策參考指南》*中的 [AWSElasticBeanstalkReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkReadOnly.html) 頁面。

**重要**  
Elastic Beanstalk 受管政策不提供精細許可，其會授予使用 Elastic Beanstalk 應用程式可能需要的所有許可。在某些情況下，您可能想要進一步限制我們受管政策的許可。如需一個使用案例的範例，請參閱 [防止跨環境 Amazon S3 儲存貯體存取](AWSHowTo.iam.cross-env-s3-access.md)。  
此外，我們的受管政策也不涵蓋您可能新增至解決方案，並且不由 Elastic Beanstalk 管理的自訂資源許可。若要實作更精細的許可、最低必要許可或自訂資源許可，請使用[自訂政策](#AWSHowTo.iam.policies)。

**已廢除的 受管政策**  
之前，Elastic Beanstalk 支援兩項其他受管使用者政策，即 **AWSElasticBeanstalkFullAccess** 和 **AWSElasticBeanstalkReadOnlyAccess**。我們計劃淘汰這些之前的政策。您可能仍然可以在 IAM 主控台中查看和使用它們。不過，我們建議您轉換為使用新的受管使用者政策，並新增自訂政策來授予自訂資源許可 (若有)。

## 與其他服務整合的政策
<a name="iam-userpolicies-managed-other-services"></a>

如果您偏好使用其他服務，我們也提供更精細的政策，讓您能夠將環境與此類其他服務整合。
+ **AWSElasticBeanstalkRoleCWL** – 允許環境管理 Amazon CloudWatch Logs 日誌群組。
+ **AWSElasticBeanstalkRoleRDS** – 允許環境整合 Amazon RDS 執行個體。
+ **AWSElasticBeanstalkRoleWorkerTier** – 允許工作者環境層建立 Amazon DynamoDB 資料表和 Amazon SQS 佇列。
+ **AWSElasticBeanstalkRoleECS** – 允許多容器 Docker 環境管理 Amazon ECS 叢集。
+ **AWSElasticBeanstalkRoleCore** – 允許 Web 服務環境的核心操作。
+ **AWSElasticBeanstalkRoleSNS** – 允許環境啟用 Amazon SNS 主題整合。

若要查看特定受管政策的 JSON 來源，請參閱 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html)。

## 透過受管政策控制存取
<a name="iam-userpolicies-managed"></a>

您可以使用受管政策，來授予對 Elastic Beanstalk 的完整存取或唯讀存取。當需要其他許可才能存取新功能時，Elastic Beanstalk 會自動更新這些政策。

**若要將受管政策套用至 IAM 使用者或群組**

1. 在 IAM 主控台中開啟 [**Policies (政策)** 頁面](https://console.aws.amazon.com/iam/home#policies)。

1. 在搜尋方塊中，輸入 **AWSElasticBeanstalk** 以篩選政策。

1. 在政策清單中，選取 **AWSElasticBeanstalkReadOnly** 或 **AdministratorAccess-AWSElasticBeanstalk** 旁的核取方塊。

1. 選擇**政策動作**，再選擇**附加**。

1. 選取一或多個使用者和群組以將政策連接到。您可用**篩選**功能表和搜尋方塊來篩選主體實體清單。

1. 選擇**連接政策**。

## 建立自訂使用者政策
<a name="AWSHowTo.iam.policies"></a>

您可以建立自己的 IAM 政策，以允許或拒絕對特定 Elastic Beanstalk 資源上執行特定 Elastic Beanstalk API 動作，並控制對不由 Elastic Beanstalk 管理的自訂資源的存取。如需將政策連接至使用者或群組的相關詳細資訊，請參閱《*IAM 使用者指南*》中的[使用政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。如需有關建立自訂政策的詳細資訊，請參閱《*IAM 使用者指南*》中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

**注意**  
請注意，雖然您可限制使用者與 Elastic Beanstalk API 的互動方式，但目前仍沒有有效的方法，可針對具備建立必要基礎資源許可的使用者，避免其在 Amazon EC2 和其他服務內建立其他資源。  
您可以將這些政策視為分配 Elastic Beanstalk 責任的有效方法，而不是保護所有基礎資源的方法。

**重要**  
如果您將自訂政策指派給 Elastic Beanstalk 服務角色，請務必為其指派適當的啟動範本許可。否則，您可能沒有更新環境或啟動新環境所需的許可。如需詳細資訊，請參閱[啟動範本所需的權限](environments-cfg-autoscaling-launch-templates.md#environments-cfg-autoscaling-launch-templates-permissions)。

IAM 政策內含描述您欲授予之許可的政策陳述式。為 Elastic Beanstalk 建立政策陳述式時，您必須了解如何使用政策陳述式的下列四個部分：
+ **Effect** (效果) 指定欲允許或拒絕陳述式內的動作。
+ **Action** (動作) 指定您欲控制的 [API 操作](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_Operations.html)。例如，使用 `elasticbeanstalk:CreateEnvironment` 來指定 `CreateEnvironment` 操作。特定操作 (如建立環境) 需要其他許可來執行這些動作。如需詳細資訊，請參閱[Elastic Beanstalk 動作的資源與條件](AWSHowTo.iam.policies.actions.md)。
**注意**  
若要使用 [https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) API 操作，請指定下列兩個虛擬動作之一 (或同時)，而非 API 操作名稱：  

`elasticbeanstalk:AddTags`  
控制呼叫 `UpdateTagsForResource` 並傳送欲在 `TagsToAdd` 參數新增之標籤清單的許可。

`elasticbeanstalk:RemoveTags`  
控制呼叫 `UpdateTagsForResource` 並傳送欲在 `TagsToRemove` 參數移除之標籤金鑰清單的許可。
+ **Resource** (資源) 指定您欲控制存取的資源。若要指定 Elastic Beanstalk 資源，請列出各個資源的 [Amazon Resource Name](AWSHowTo.iam.policies.arn.md) (ARN)。
+ (選用) **Condition** (條件) 指定陳述式授予之許可的限制。如需詳細資訊，請參閱[Elastic Beanstalk 動作的資源與條件](AWSHowTo.iam.policies.actions.md)。

以下章節示範幾個案例，其中您可能會考慮自訂使用者政策。

### 啟用有限 Elastic Beanstalk 環境建立
<a name="AWSHowTo.iam.policy.env-creation"></a>

下列範例中的政策可讓使用者呼叫 `CreateEnvironment` 動作來建立名稱開頭為 **Test** 且具備特定應用程式及應用程式版本的環境。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid":"CreateEnvironmentPerm",
      "Action": [
        "elasticbeanstalk:CreateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My First Elastic Beanstalk Application/Test*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My First Elastic Beanstalk Application"],
          "elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My First Elastic Beanstalk Application/First Release"]
        }
      }
    },
    {
      "Sid":"AllNonResourceCalls",
      "Action":[
        "elasticbeanstalk:CheckDNSAvailability",
        "elasticbeanstalk:CreateStorageLocation"
      ],
      "Effect":"Allow",
      "Resource":[
        "*"
      ]
    }
  ]
}
```

------

上述政策說明如何授予對 Elastic Beanstalk 操作有限制的存取。為了實際啟動環境，使用者必須具有許可，才能建立也支援環境 AWS 的資源。例如，下列政策針對用於 Web 伺服器環境的預設資源組合，授予存取：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:*",
        "ecs:*",
        "elasticloadbalancing:*",
        "autoscaling:*",
        "cloudwatch:*",
        "s3:*",
        "sns:*",
        "cloudformation:*",
        "sqs:*"
        ],
      "Resource": "*"
    }
  ]
}
```

------

### 啟用存放在 Amazon S3 的 Elastic Beanstalk 日誌的存取
<a name="AWSHowTo.iam.policy.view-s3-logs"></a>

下列範例中的政策可讓使用者提取 Elastic Beanstalk 日誌、將日誌暫存在 Amazon S3 中，以及擷取日誌。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "s3:DeleteObject",
        "s3:GetObjectAcl",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::elasticbeanstalk-*"
    }
  ]
}
```

------

**注意**  
若要僅限制這些日誌路徑的權限，請使用下列資源格式。  

```
"arn:aws:s3:::elasticbeanstalk-{{us-east-2}}-{{123456789012}}/resources/environments/logs/*"
```

### 啟用特定 Elastic Beanstalk 應用程式的管理
<a name="AWSHowTo.iam.policy.manage-app"></a>

以下範例的政策可讓使用者在一個特定 Elastic Beanstalk 應用程式內管理環境和其他資源。此政策拒絕對其他應用程式的資源執行 Elastic Beanstalk 動作，也拒絕建立和刪除 Elastic Beanstalk 應用程式。

**注意**  
此政策不會拒絕存取透過其他服務的任何資源。它示範由不同使用者分配 Elastic Beanstalk 應用程式管理責任的有效方法，而不是做為保護基礎資源的方法。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateApplication",
        "elasticbeanstalk:DeleteApplication"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateApplicationVersion",
        "elasticbeanstalk:CreateConfigurationTemplate",
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:DeleteApplicationVersion",
        "elasticbeanstalk:DeleteConfigurationTemplate",
        "elasticbeanstalk:DeleteEnvironmentConfiguration",
        "elasticbeanstalk:DescribeApplicationVersions",
        "elasticbeanstalk:DescribeConfigurationOptions",
        "elasticbeanstalk:DescribeConfigurationSettings",
        "elasticbeanstalk:DescribeEnvironmentResources",
        "elasticbeanstalk:DescribeEnvironments",
        "elasticbeanstalk:DescribeEvents",
        "elasticbeanstalk:DeleteEnvironmentConfiguration",
        "elasticbeanstalk:RebuildEnvironment",
        "elasticbeanstalk:RequestEnvironmentInfo",
        "elasticbeanstalk:RestartAppServer",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticbeanstalk:SwapEnvironmentCNAMEs",
        "elasticbeanstalk:TerminateEnvironment",
        "elasticbeanstalk:UpdateApplicationVersion",
        "elasticbeanstalk:UpdateConfigurationTemplate",
        "elasticbeanstalk:UpdateEnvironment",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticbeanstalk:ValidateConfigurationSettings"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringNotEquals": {
          "elasticbeanstalk:InApplication": [
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/myapplication"
          ]
        }
      }
    }
  ]
}
```

------