

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# OpsWorks スタックがユーザーに代わって動作することを許可する
<a name="opsworks-security-servicerole"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

OpsWorks スタックは、ユーザーに代わってさまざまな AWS サービスとやり取りする必要があります。例えば、 OpsWorks Stacks は、Amazon EC2 とやり取りしてインスタンスを作成し、Amazon CloudWatch とやり取りしてモニタリング統計を取得します。スタックを作成するときは、通常はサービスロールと呼ばれる IAM OpsWorks ロールを指定します。これにより、スタックに適切なアクセス許可が付与されます。

![\[[Add Stack] (スタックの追加) ページの IAM ロールリスト。\]](http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/images/add-stack-iamrole.png)


新しいスタックのサービスロールを指定するときは、次のいずれかの操作を実行します。
+ 以前に作成した標準サービスロールを指定します。

  通常は、最初のスタックの作成時に標準サービスロールを作成し、そのロールを以降のすべてのスタックに使用できます。
+ IAM コンソールまたは API を使用して作成したカスタムサービスロールを指定します。

  このアプローチは、標準サービスロールよりも制限されたアクセス許可を OpsWorks スタックに付与する場合に便利です。

**注記**  
最初のスタックを作成するには、IAM [**AdministratorAccess**] ポリシーテンプレートでアクセス権限が定義されている必要があります。これらの権限により、 OpsWorks スタックは新しいIAMサービスロールを作成し、[前述のように](opsworks-security-users-manage-import.md)ユーザーをインポートすることができます。以降のすべてのスタックでは、ユーザーは最初のスタック用に作成されたサービスロールを選択できます。スタックを作成するための完全な管理権限は必要ではありません。

標準サービスロールにより、次のアクセス許可が付与されます。
+ すべての Amazon EC2 アクションを実行する (`ec2:*`)。
+ CloudWatch 統計を取得する (`cloudwatch:GetMetricStatistics`)。
+ Elastic Load Balancing を使用してサーバーにトラフィックを分散させる (`elasticloadbalancing:*`)。
+ Amazon RDS インスタンスをデータベースサーバーとして使用する (`rds:*`)。
+ IAM ロール (`iam:PassRole`) を使用して、 スタックと Amazon EC2 OpsWorks インスタンス間の安全な通信を提供します。

カスタムサービスロールを作成する場合は、スタックの管理に必要なすべてのアクセス許可が 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"
                }
            }
        }
    ]
}
```

------

また、サービスロールには信頼関係があります。 OpsWorks スタックによって作成されたサービスロールには、次の信頼関係があります。

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

****  

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

------

 OpsWorks スタックがユーザーに代わって動作するには、サービスロールにこの信頼関係が必要です。デフォルトのサービスロールを使用する場合は、信頼関係を変更しないでください。カスタムサービスロールを作成する場合は、以下のいずれかを実行することで信頼関係を指定します。
+ [[AM console]](https://console.aws.amazon.com/iam/home#roles) (IAMコンソール) で **[Create role]** (ロールの作成) ウィザードを使用している場合は、**[Choose a use case]** (ユースケースの選択) で **[Opsworks]** を選択します。このロールには適切な信頼関係がありますが、暗黙のうちにアタッチされているポリシーはありません。 OpsWorks スタックにユーザーに代わって行動する権限を付与するために、以下を含むカスタマー管理ポリシーを作成し、新しいロールにアタッチします。

------
#### [ 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": {
                ...
              } ]
          }
        },
     }
  }
  ```