AWS OpsWorks スタックがユーザーに代わって動作することを許可する - AWS OpsWorks

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

AWS OpsWorks スタックがユーザーに代わって動作することを許可する

重要

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

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

[Add Stack] (スタックの追加) ページの IAM ロールリスト。

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

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

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

  • 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 例は、標準サービスロールのポリシーステートメントです。カスタムサービスロールのポリシーステートメントには、少なくとも以下のアクセス権限が含まれていなければなりません。

{ "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 スタックがユーザーに代わって動作するには、サービスロールにこの信頼関係が必要です。デフォルトのサービスロールを使用する場合は、信頼関係を変更しないでください。カスタムサービスロールを作成する場合は、以下のいずれかを実行することで信頼関係を指定します。

  • [AM console] (IAMコンソール) で [Create role] (ロールの作成) ウィザードを使用している場合は、[Choose a use case] (ユースケースの選択) で [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": { "OpsWorksServiceRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "opsworks.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "opsworks-service", "PolicyDocument": { ... } ] } }, } }