ユーザーに代わって AWS OpsWorks スタックがタスクを実行できるようにする - AWS OpsWorks

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

ユーザーに代わって AWS OpsWorks スタックがタスクを実行できるようにする

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


            の IAM ロールリストスタックの追加ページで.

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

  • AWS OpsWorks スタックによって、アクセス許可の標準セットを適用した新しいサービスロールが作成されるようにします。

    ロールに aws-opsworks-service-role または類似の名前が付けられます。

  • 以前に作成した標準サービスロールを指定します。

    通常は、最初のスタックの作成時に標準サービスロールを作成し、そのロールを以降のすべてのスタックに使用できます。

  • IAM コンソールまたは API を使用して作成したカスタムサービスロールを指定します。

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

注記

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

標準サービスロールにより、次のアクセス許可が付与されます。

  • すべての Amazon EC2 アクションを実行します(ec2:*).

  • CloudWatch の統計情報の取得 (cloudwatch:GetMetricStatistics).

  • Elastic Load Balancing を使用して、サーバーを分散させる (elasticloadbalancing:*).

  • Amazon RDS インスタンスをデータベースサーバーとして使用する(rds:*).

  • IAM ロールの使用(iam:PassRole) 間の安全な通信を提供するAWS OpsWorksスタックと Amazon EC2 インスタンス。

カスタムサービスロールを作成する場合は、スタックを管理するために AWS OpsWorks スタックが必要とするすべてのアクセス許可を確実に付与する必要があります。次の JSON 例は、標準サービスロールのポリシーステートメントです。カスタムサービスロールのポリシーステートメントには、少なくとも以下のアクセス権限が含まれていなければなりません。

{ "Statement": [ { "Action": [ "ec2:*", "iam:PassRole", "cloudwatch:GetMetricStatistics", "cloudwatch:DescribeAlarms", "ecs:*", "elasticloadbalancing:*", "rds:*" ], "Effect": "Allow", "Resource": [ "*" ] } ] }

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

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

AWS OpsWorks スタックがユーザーに代わってタスクを実行するには、この信頼関係がサービスロールに必要です。デフォルトのサービスロールを使用する場合は、信頼関係を変更しないでください。カスタムサービスロールを作成する場合は、次のいずれかを実行して信頼関係を指定します。

  • [] を使用している場合ロールの作成ウィザードの開始IAM コンソール, でユースケースを選択するには] で、Opsworks。このロールには適切な信頼関係がありますが、ポリシーが暗黙的にアタッチされていません。許可するにはAWS OpsWorksユーザーに代わって行動するアクセス許可をスタックし、以下を含むカスタマー管理ポリシーを作成し、それを新しいロールにアタッチします。

    { "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] セクションに次のような行を追加できます。

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