

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

# 允許 OpsWorks Stacks 代表您採取行動
<a name="opsworks-security-servicerole"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

OpsWorks Stacks 需要代表您與各種 AWS 服務互動。例如， OpsWorks Stacks 會與 Amazon EC2 互動以建立執行個體，並與 Amazon CloudWatch 互動以取得監控統計資料。當您建立堆疊時，您可以指定 IAM 角色，通常稱為服務角色，以授予 OpsWorks Stacks 適當的許可。

![\[新增堆疊頁面中的 IAM 角色清單。\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/add-stack-iamrole.png)


當您指定新堆疊的服務角色時，您可以執行下列其中一項作業：
+ 指定您先前建立的標準服務角色。

  您通常可以在建立您第一個堆疊時建立一個標準服務角色，然後針對所有後續的堆疊使用該角色。
+ 指定您使用 IAM 主控台或 API 建立的自訂服務角色。

  如果您想要授予 OpsWorks Stacks 比標準服務角色更多的有限許可，此方法非常有用。

**注意**  
若要建立您的第一個堆疊，您必須在 IAM **AdministratorAccess** 政策範本中定義許可。這些許可會允許 OpsWorks Stacks 建立新的 IAM 服務角色，允許您匯入使用者，[如先前所述](opsworks-security-users-manage-import.md)。針對所有後續堆疊，使用者可選取為第一個堆疊建立的服務角色。他們不需要完整的管理許可也能建立堆疊。

標準服務角色會授予下列許可：
+ 執行所有 Amazon EC2 動作 (`ec2:*`)。
+ 取得 CloudWatch 統計資料 (`cloudwatch:GetMetricStatistics`)。
+ 使用 Elastic Load Balancing 將流量分配到伺服器 (`elasticloadbalancing:*`)。
+ 使用 Amazon RDS 執行個體做為資料庫伺服器 (`rds:*`)。
+ 使用 IAM 角色 (`iam:PassRole`) 在 OpsWorks Stacks 和 Amazon EC2 執行個體之間提供安全通訊。

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

------
#### [ 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"
                }
            }
        }
    ]
}
```

------

服務角色也具有信任關聯。Stacks OpsWorks 建立的服務角色具有下列信任關係。

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

****  

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

------

服務角色必須具有此信任關係， Stacks OpsWorks 才能代表您採取行動。若您使用預設服務角色，請不要修改信任關聯。如果您要建立自訂服務角色，請執行下列其中一項動作來指定信任關係：
+ 如果您在 [IAM 主控台](https://console.aws.amazon.com/iam/home#roles)中使用**建立角色**精靈，請在**選擇使用案例**中選擇 **Opsworks**。此角色具有適當的信任關係，但不會隱含連接任何政策。若要授予 OpsWorks Stacks 代表您執行動作的許可，請建立包含下列項目的客戶受管政策，並將其連接至新角色。

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

****  

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

------
+ 如果您使用的是 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": {
                ...
              } ]
          }
        },
     }
  }
  ```