根據資源許可的範例政策 - AWS Elastic Beanstalk

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

根據資源許可的範例政策

本節將逐步介紹一個使用案例,此案例針對存取特定 Elastic Beanstalk 資源的 Elastic Beanstalk 動作,控制使用者的許可。我們將逐步介紹支援該使用案例的範例政策。如需 Elastic Beanstalk 資源政策的詳細資訊,請參閱建立自訂使用者政策。如需將政策連接到使用者和群組的相關資訊,請參閱《使用 AWS Identity and Access Management》中的管理 IAM 政策

在我們的使用案例中,Example Corp. (範例公司) 是一家小型的顧問公司,針對兩種不同的客戶開發應用程式。John 是開發經理,負責監督兩種 Elastic Beanstalk 應用程式 (應用程式 1 和應用程式 2) 的開發。John 負責開發和針對兩種應用程式進行一些測試,而且只有他可以更新兩個應用程式的正式生產環境。下列是他所需的應用程式 1 和應用程式 2 的許可:

  • 檢視應用程式、應用程式版本、環境和組態範本

  • 建立應用程式版本,並將這些版本部署到預備環境

  • 更新正式生產環境

  • 建立和終止環境

Jill 是一位測試人員,需要存取許可來檢視下列資源,以監控和測試兩種應用程式:應用程式、應用程式版本、環境和組態範本。但是,她不應具有變更任何 Elastic Beanstalk 資源的許可。

Jack 是應用程式 1 的開發人員,需要存取許可來檢視應用程式 1 的所有資源,也需要建立應用程式 1 的應用程式版本,並將這些版本部署到預備環境。

Judy 是 Example Corp. 的 AWS 帳戶管理員,她為 John、Jill 和 Jack 建立了 IAM 使用者,並將下列政策連結到這些使用者,以針對應用程式 1 和應用程式 2 授予適當的許可。

範例 1:John - 應用程式 1、應用程式 2 的開發經理

我們已將 John 的政策細分為三項不同的政策,讓這些政策更易於閱讀和管理。這些政策共同授予了 John 所需的許可,使其能對這兩個應用程式執行開發、測試和部署動作。

第一個政策指定 Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS 和 AWS CloudFormation 的動作。Elastic Beanstalk 就是靠著這些額外服務在建立環境時佈建基礎資源。

請注意,本政策為範例。其針對 Elastic Beanstalk 管理應用程式和環境所用的 AWS 產品,提供廣泛的許可。例如,ec2:* 可讓 IAM 使用者對 AWS 帳戶中的任何 Amazon EC2 資源執行任何動作。這些許可不限於您搭配 Elastic Beanstalk 使用的資源。以最佳實務而言,您應僅授予個人執行其職責所需的許可。

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:*", "ecs:*", "ecr:*", "elasticloadbalancing:*", "autoscaling:*", "cloudwatch:*", "s3:*", "sns:*", "cloudformation:*", "dynamodb:*", "rds:*", "sqs:*", "logs:*", "iam:GetPolicyVersion", "iam:GetRole", "iam:PassRole", "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfiles", "iam:ListRoles", "iam:ListServerCertificates", "acm:DescribeCertificate", "acm:ListCertificates", "codebuild:CreateProject", "codebuild:DeleteProject", "codebuild:BatchGetBuilds", "codebuild:StartBuild" ], "Resource":"*" } ] }

第二個政策指定針對應用程式 1 和應用程式 2 的資源,John 能夠執行的 Elastic Beanstalk 動作。AllCallsInApplications 陳述式針對應用程式 1 和應用程式 2 內的所有資源 (例如 "elasticbeanstalk:*"),允許所有能夠執行的 Elastic Beanstalk 動作 (elasticbeanstalk:CreateEnvironment)。AllCallsOnApplications 陳述式針對應用程式 1 和應用程式 2 的資源 (例如 "elasticbeanstalk:*"elasticbeanstalk:DescribeApplications 等),允許所有能夠執行的 Elastic Beanstalk 動作 (elasticbeanstalk:UpdateApplication)。AllCallsOnSolutionStacks 陳述式針對解決方案堆疊的資源 (例如 "elasticbeanstalk:*"),允許所有能夠執行的 Elastic Beanstalk 動作 (elasticbeanstalk:ListAvailableSolutionStacks)。

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllCallsInApplications", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] } } }, { "Sid":"AllCallsOnApplications", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] }, { "Sid":"AllCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

第三個政策指定第二個政策需要許可才能完成的 Elastic Beanstalk 動作。AllNonResourceCalls 陳述式允許了 elasticbeanstalk:CheckDNSAvailability 動作的執行,這項動作是呼叫 elasticbeanstalk:CreateEnvironment 和其他動作所必需。此陳述式也允許了 elasticbeanstalk:CreateStorageLocation 動作的執行,這項動作是 elasticbeanstalk:CreateApplicationelasticbeanstalk:CreateEnvironment 和其他動作所必需。

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability", "elasticbeanstalk:CreateStorageLocation" ], "Effect":"Allow", "Resource":[ "*" ] } ] }

範例 2:Jill - 應用程式 1、應用程式 2 的測試人員

我們已將 Jill 的政策細分為三項不同的政策,讓這些政策更易於閱讀和管理。這些政策共同授予了 Jill 所需的許可,使其能對兩種應用程式執行測試和監控動作。

第一個政策指定對 Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS 和 AWS CloudFormation (適用於非舊式容器類型) 執行的 Describe*List*Get* 動作,讓 Elastic Beanstalk 動作能夠擷取應用程式 1 和應用程式 2 基礎資源的相關資訊。

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:Describe*", "elasticloadbalancing:Describe*", "autoscaling:Describe*", "cloudwatch:Describe*", "cloudwatch:List*", "cloudwatch:Get*", "s3:Get*", "s3:List*", "sns:Get*", "sns:List*", "rds:Describe*", "cloudformation:Describe*", "cloudformation:Get*", "cloudformation:List*", "cloudformation:Validate*", "cloudformation:Estimate*" ], "Resource":"*" } ] }

第二個政策指定針對應用程式 1 與應用程式 2 的資源,Jill 能夠執行的 Elastic Beanstalk 動作。AllReadCallsInApplications 陳述式允許 Jill 呼叫 Describe* 動作和環境資訊動作。AllReadCallsOnApplications 陳述式允許 Jill 針對應用程式 1 與應用程式 2 的應用程式資源,呼叫 DescribeApplicationsDescribeEvents 動作。AllReadCallsOnSolutionStacks 允許針對解決方案堆疊資源 (ListAvailableSolutionStacksDescribeConfigurationOptionsValidateConfigurationSettings),執行相關的檢視動作。

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllReadCallsInApplications", "Action":[ "elasticbeanstalk:Describe*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] } } }, { "Sid":"AllReadCallsOnApplications", "Action":[ "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEvents" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] }, { "Sid":"AllReadCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:ListAvailableSolutionStacks", "elasticbeanstalk:DescribeConfigurationOptions", "elasticbeanstalk:ValidateConfigurationSettings" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

第三個政策指定第二個政策需要許可才能完成的 Elastic Beanstalk 動作。AllNonResourceCalls 陳述式允許了 elasticbeanstalk:CheckDNSAvailability 動作的執行,這項動作是呼叫某些檢視動作所必需。

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability" ], "Effect":"Allow", "Resource":[ "*" ] } ] }

範例 3:Jack - 應用程式 1 的開發人員

我們已將 Jack 的政策細分為三項不同的政策,讓這些政策更易於閱讀和管理。這些政策共同授予了 Jack 所需的許可,使其能對 應用程式 1 資源執行開發、測試和部署動作。

第一個政策指定對 Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS 和 AWS CloudFormation (適用於非舊式容器類型) 執行的動作,讓 Elastic Beanstalk 動作能夠檢視和使用應用程式 1 的基礎資源。如需支援的非舊式容器類型的清單,請參閱 為何部分平台版本標記為舊版?

請注意,本政策為範例。其針對 Elastic Beanstalk 管理應用程式和環境所用的 AWS 產品,提供廣泛的許可。例如,ec2:* 可讓 IAM 使用者對 AWS 帳戶中的任何 Amazon EC2 資源執行任何動作。這些許可不限於您搭配 Elastic Beanstalk 使用的資源。以最佳實務而言,您應僅授予個人執行其職責所需的許可。

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

第二個政策指定針對應用程式 1 的資源,Jack 能夠執行的 Elastic Beanstalk 動作。

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllReadCallsAndAllVersionCallsInApplications", "Action":[ "elasticbeanstalk:Describe*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo", "elasticbeanstalk:CreateApplicationVersion", "elasticbeanstalk:DeleteApplicationVersion", "elasticbeanstalk:UpdateApplicationVersion" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] } } }, { "Sid":"AllReadCallsOnApplications", "Action":[ "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEvents" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] }, { "Sid":"UpdateEnvironmentInApplications", "Action":[ "elasticbeanstalk:UpdateEnvironment" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/app1/app1-staging*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] }, "StringLike":{ "elasticbeanstalk:FromApplicationVersion":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/app1/*" ] } } }, { "Sid":"AllReadCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:ListAvailableSolutionStacks", "elasticbeanstalk:DescribeConfigurationOptions", "elasticbeanstalk:ValidateConfigurationSettings" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

第三個政策指定第二個政策需要許可才能完成的 Elastic Beanstalk 動作。AllNonResourceCalls 陳述式允許了 elasticbeanstalk:CheckDNSAvailability 動作的執行,這項動作是呼叫 elasticbeanstalk:CreateEnvironment 和其他動作所必需。此陳述式也允許了 elasticbeanstalk:CreateStorageLocation 動作的執行,這項動作是 elasticbeanstalk:CreateEnvironment 和其他動作所必需。

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability", "elasticbeanstalk:CreateStorageLocation" ], "Effect":"Allow", "Resource":[ "*" ] } ] }