允許 AWS OpsWorks 堆疊代表您採取行動 - AWS OpsWorks

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

允許 AWS OpsWorks 堆疊代表您採取行動

重要

該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post 或透過進AWS 階 Support 與 AWS Support 團隊聯絡。

AWS OpsWorks 堆疊需要代表您與各種 AWS 服務互動。例如, AWS OpsWorks 堆棧與 Amazon EC2 進行交互以創建實例,並與 Amazon 進行交互 CloudWatch 以獲取監控統計信息。建立堆疊時,您可以指定 IAM 角色 (通常稱為服務角色),以授與 AWS OpsWorks 堆疊適當的權限。

新增堆疊頁面中的 IAM 角色清單。

當您指定新堆疊的服務角色時,您可以執行下列其中一項作業:

  • 指定您先前建立的標準服務角色。

    您通常可以在建立您第一個堆疊時建立一個標準服務角色,然後針對所有後續的堆疊使用該角色。

  • 指定您使用 IAM 主控台或 API 建立的自訂服務角色。

    如果您想要授與 AWS OpsWorks Stack 比標準服務角色更有限的權限,此方法非常有用。

注意

若要建立第一個堆疊,您必須具有 IAM AdministratorAccess政策範本中定義的許可。這些許可會允許 AWS OpsWorks Stacks 建立新的 IAM 服務角色,允許您匯入使用者,如先前所述。針對所有後續堆疊,使用者可選取為第一個堆疊建立的服務角色。他們不需要完整的管理許可也能建立堆疊。

標準服務角色會授予下列許可:

  • 執行所有 Amazon EC2 動作 (ec2:*)。

  • 獲取 CloudWatch 統計信息(cloudwatch:GetMetricStatistics)。

  • 使用 Elastic Load Balancing 將流量分配到伺服器 (elasticloadbalancing:*)。

  • 使用 Amazon RDS 執行個體做為資料庫伺服器 (rds:*)。

  • 使用 IAM 角色 (iam:PassRole) 在 AWS OpsWorks 堆疊和 Amazon EC2 執行個體之間提供安全通訊。

如果您建立自訂服務角色,則必須確保該角色授與 AWS OpsWorks Stacks 管理堆疊所需的所有權限。下列 JSON 範本是標準服務角色的政策聲明;自訂服務角色應該在其政策聲明中至少包含以下許可。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:*", "iam:PassRole", "cloudwatch:GetMetricStatistics", "cloudwatch:DescribeAlarms", "ecs:*", "elasticloadbalancing:*", "rds:*" ], "Effect": "Allow", "Resource": [ "*" ], "Condition": { "StringEquals": { "iam:PassedToService": "ec2.amazonaws.com" } } } ] }

服務角色也具有信任關聯。 AWS OpsWorks 堆疊所建立的服務角色具有下列信任關係。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "StsAssumeRole", "Effect": "Allow", "Principal": { "Service": "opsworks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

服務角色必須具有此信任關係, AWS OpsWorks Stacks 才能代表您執行動作。若您使用預設服務角色,請不要修改信任關聯。如果您要建立自訂服務角色,請執行下列其中一項動作來指定信任關係:

  • 如果您在 IAM 主控台中使用建立角色精靈,請在 [選擇使用案例] 中選擇 Ops works。此角色具有適當的信任關係,但不會隱含附加任何原則。若要授與 AWS OpsWorks Stacks 代表您採取行動的權限,請建立包含下列內容的客戶管理政策,並將其附加至新角色。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricStatistics", "ec2:*", "ecs:*", "elasticloadbalancing:*", "iam:GetRolePolicy", "iam:ListInstanceProfiles", "iam:ListRoles", "iam:ListUsers", "rds:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "ec2.amazonaws.com" } } } ] }
  • 如果您使用的是 AWS CloudFormation 範本,您可以將類似下列內容新增至範本的資源區段。

    "Resources": { "OpsWorksServiceRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "opsworks.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "opsworks-service", "PolicyDocument": { ... } ] } }, } }