管理 Elastic Beanstalk 使用者政策 - AWS Elastic Beanstalk

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

管理 Elastic Beanstalk 使用者政策

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

受管使用者政策
  • AdministratorAccessAWSElasticBeanstalk- 提供使用者完整的管理權限,以建立、修改和刪除 Elastic Beanstalk 應用程式、應用程式版本、組態設定、環境及其基礎資源。若要檢視受管理的策略內容,請參閱AWS 受管理策略參考指南中的 AdministratorAccess-AWSElasticBeanstalk 頁面。

  • AWSElasticBeanstalkReadOnly— 允許使用者檢視應用程式和環境,但不能執行修改應用程式和環境的作業。它提供對所有 Elastic Beanstalk 資源以及 Elastic Beanstalk 控制台擷取的其他 AWS 資源的唯讀存取權。請注意,唯讀存取不會啟用諸如下載 Elastic Beanstalk 日誌供您讀取等動作。這是因為日誌暫存在 Amazon S3 儲存貯體,其中 Elastic Beanstalk 需要寫入許可。請參閱本主題結尾的範例,了解如何啟用 Elastic Beanstalk 日誌的存取。若要檢視受管理的策略內容,請參閱《AWS 受管理策略參考指南》中的AWSElasticBeanstalkReadOnly頁面。

重要

Elastic Beanstalk 受管政策不提供精細許可,其會授予使用 Elastic Beanstalk 應用程式可能需要的所有許可。在某些情況下,您可能希望進一步限制我們託管策略的權限。如需一個使用案例的範例,請參閱防止跨環境 Amazon S3 儲存貯體存取

此外,我們的受管政策也不涵蓋您可能新增至解決方案,並且不由 Elastic Beanstalk 管理的自訂資源許可。若要實作更精細的許可、最低必要許可或自訂資源許可,請使用自訂政策

已廢除的 受管政策

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

與其他服務整合的政策

如果您偏好使用其他服務,我們也提供更精細的政策,讓您能夠將環境與此類其他服務整合。

  • AWSElasticBeanstalkRoleCWL— 允許環境管理 Amazon CloudWatch 日誌記錄群組。

  • AWSElasticBeanstalkRoleRDS— 允許環境整合 Amazon RDS 執行個體。

  • AWSElasticBeanstalkRoleWorkerTier— 允許工作者環境層建立 Amazon DynamoDB 表格和 Amazon SQS 佇列。

  • AWSElasticBeanstalkRoleECS— 允許多容器泊塢視窗環境管理 Amazon ECS 叢集。

  • AWSElasticBeanstalkRoleCore— 允許 Web 服務環境的核心操作。

  • AWSElasticBeanstalkRoleSNS— 允許環境啟用 Amazon SNS 主題整合。

若要查看特定受管原則的 JSON 來源,請參閱受AWS 管政策參考指南

透過受管政策控制存取

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

若要將受管政策套用至 IAM 使用者或群組
  1. 在 IAM 主控台中開啟 Policies (政策) 頁面

  2. 在搜尋方塊中,輸入 AWSElasticBeanstalk 以篩選政策。

  3. 在策略清單中,選取AWSElasticBeanstalkReadOnlyAdministratorAccess- 旁邊的核取方塊AWSElasticBeanstalk。

  4. 選擇政策動作,再選擇附加

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

  6. 選擇連接政策

建立自訂使用者政策

您可以建立自己的 IAM 政策,以允許或拒絕對特定 Elastic Beanstalk 資源上執行特定 Elastic Beanstalk API 動作,並控制對不由 Elastic Beanstalk 管理的自訂資源的存取。如需將政策連接至使用者或群組的相關詳細資訊,請參閱《IAM 使用者指南》中的使用政策。如需有關建立自訂政策的詳細資訊,請參閱《IAM 使用者指南》中的建立 IAM 政策

注意

請注意,雖然您可限制使用者與 Elastic Beanstalk API 的互動方式,但目前仍沒有有效的方法,可針對具備建立必要基礎資源許可的使用者,避免其在 Amazon EC2 和其他服務內建立其他資源。

您可以將這些政策視為分配 Elastic Beanstalk 責任的有效方法,而不是保護所有基礎資源的方法。

2019 年 11 月,Elastic Beanstalk 發佈支援 Amazon EC2 啟動範本。這是您環境的 Auto Scaling 群組可用來啟動 Amazon EC2 執行個體的新資源類型,而且需要新的許可。大多數客戶應該不會受到影響,因為如果使用者政策缺少所需權限,環境仍可使用舊式資源、啟動組態。不過,如果您嘗試使用需要 Amazon EC2 啟動範本的新功能,而且有自訂政策,則環境建立或更新作業可能會失敗。在此情況下,請確保自訂政策具有下列權限。

Amazon EC2 啟動範本的必要許可
  • EC2:CreateLaunchTemplate

  • EC2:CreateLaunchTemplateVersions

  • EC2:DeleteLaunchTemplate

  • EC2:DeleteLaunchTemplateVersions

  • EC2:DescribeLaunchTemplate

  • EC2:DescribeLaunchTemplateVersions

IAM 政策內含描述您欲授予之許可的政策陳述式。為 Elastic Beanstalk 建立政策陳述式時,您必須了解如何使用政策陳述式的下列四個部分:

  • Effect (效果) 指定欲允許或拒絕陳述式內的動作。

  • Action (動作) 指定您欲控制的 API 操作。例如,使用 elasticbeanstalk:CreateEnvironment 來指定 CreateEnvironment 操作。特定操作 (如建立環境) 需要其他許可來執行這些動作。如需詳細資訊,請參閱 Elastic Beanstalk 動作的資源與條件

    注意

    若要使用 UpdateTagsForResource API 操作,請指定下列兩個虛擬動作之一 (或同時),而非 API 操作名稱:

    elasticbeanstalk:AddTags

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

    elasticbeanstalk:RemoveTags

    控制呼叫 UpdateTagsForResource 並傳送欲在 TagsToRemove 參數移除之標籤金鑰清單的許可。

  • Resource (資源) 指定您欲控制存取的資源。若要指定 Elastic Beanstalk 資源,請列出各個資源的 Amazon Resource Name (ARN)。

  • (選用) Condition (條件) 指定陳述式授予之許可的限制。如需詳細資訊,請參閱 Elastic Beanstalk 動作的資源與條件

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

啟用有限 Elastic Beanstalk 環境建立

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

{ "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 伺服器環境的預設資源組合,授予存取:

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

啟用存放在 Amazon S3 的 Elastic Beanstalk 日誌的存取

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

{ "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 應用程式的管理

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

注意

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

{ "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" ] } } } ] }