本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
根據資源許可的範例政策
本節將逐步介紹一個使用案例,此案例針對存取特定 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:CreateApplication
、elasticbeanstalk: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 的應用程式資源,呼叫 DescribeApplications
與 DescribeEvents
動作。AllReadCallsOnSolutionStacks
允許針對解決方案堆疊資源 (ListAvailableSolutionStacks
、DescribeConfigurationOptions
和 ValidateConfigurationSettings
),執行相關的檢視動作。
{
"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":[
"*"
]
}
]
}