AWS ParallelCluster の AWS Identity and Access Management アクセス許可 - AWS ParallelCluster

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

AWS ParallelCluster の AWS Identity and Access Management アクセス許可

AWS ParallelCluster は、クラスターを作成および管理する際に、IAM アクセス許可を使用してリソースへのアクセスを制御します。

AWS アカウントでクラスターを作成および管理するには、AWS ParallelCluster に次の 2 つのレベルのアクセス許可が必要です。
  • クラスターを作成および管理するための pcluster CLI コマンドを呼び出すために pcluster ユーザーが必要とするアクセス許可。

  • クラスターリソースがクラスターアクションを実行するために必要なアクセス許可。

AWS ParallelClusterAmazon EC2 インスタンスプロファイルおよびロールを使用して、クラスターリソースにアクセス許可を付与します。クラスターリソースのアクセス許可を管理するために、AWS ParallelCluster には IAM リソースへのアクセス許可も必要です。詳細については、「IAM リソースを管理するための AWS ParallelCluster ユーザーサンプルポリシー」を参照してください。

pcluster ユーザーpcluster CLI を使用してクラスターとそのリソースを作成および管理するには、IAM アクセス許可が必要です。これらのアクセス許可は IAM ポリシーに含まれており、ユーザーまたはロールに追加できます。IAM ロールの詳細については、「AWS Identity and Access Management ユーザーガイド」の「ユーザーロールの作成」を参照してください。

IAM アクセス許可を管理するための AWS ParallelCluster 設定パラメータ を使用することもできます。

以下のセクションでは、必要なアクセス許可について、例を挙げて説明します。

ポリシーの例を使用するには、<REGION><AWS ACCOUNT ID> などの文字列を適切な値に置き換えます。

次のポリシーの例では、リソースの Amazon リソースネーム (ARN) が含まれています。AWS GovCloud (US) または AWS 中国パーティションで作業する場合は、ARN を変更する必要があります。具体的には、AWS GovCloud (US) パーティションの場合は「arn:aws」から「arn:aws-us-gov」、AWS 中国パーティションの場合は「arn:aws-cn」に変更する必要があります。詳しくは、「AWS GovCloud (US) ユーザーガイド」にある「Amazon Resource Names (ARNs) in AWS GovCloud (US) Regions」および「中国での AWS サービスの使用開始」にある「ARNs for AWS services in China」を参照してください。

ポリシーの例への変更は、「AWS ParallelCluster documentation on GitHub」で追跡できます。

AWS ParallelCluster Amazon EC2 インスタンスロール

デフォルトの設定でクラスターを作成すると、AWS ParallelCluster は Amazon EC2 インスタンスプロファイルを使用して、クラスターとそのリソースの作成と管理に必要なアクセス許可を付与するデフォルトのクラスター Amazon EC2 インスタンスロールを自動的に作成します。

デフォルトの AWS ParallelCluster インスタンスロールを使用する以外の代わりの方法

デフォルトの AWS ParallelCluster インスタンスロールの代わりに、InstanceRole クラスター構成設定を使用して EC2 に既存の IAM ロールを指定できます。詳細については、「IAM アクセス許可を管理するための AWS ParallelCluster 設定パラメータ」を参照してください。通常、EC2 に付与されるアクセス許可を完全に制御するために、既存の IAM ロールを指定します。

デフォルトのインスタンスロールにポリシーを追加する場合は、InstanceProfile または InstanceRole 設定の代わりに AdditionalIamPolicies 構成設定を使用して追加の IAM ポリシーを渡すことをお勧めします。クラスターを更新するときに AdditionalIamPolicies を更新することはできますが、InstanceRole を更新することはできません。

pcluster ユーザーポリシーの AWS ParallelCluster の例

次の例は、pcluster CLI を使用して AWS ParallelCluster およびリソースを作成および管理するために必要なユーザーポリシーを示しています。ポリシーはユーザーまたはロールにアタッチできます。

AWS ParallelCluster pcluster 基本ユーザーポリシー

次のポリシーは、AWS ParallelCluster pcluster コマンドを実行するために必要なアクセス許可を示しています。

ポリシーにリストされている最後のアクションは、クラスターの設定で指定されているシークレットを検証するためのものです。例えば、AWS Secrets Manager シークレットは DirectoryService の統合設定に使用されます。この場合、クラスターは PasswordSecretArn に有効なシークレットが存在する場合にのみ作成されます。このアクションを省略すると、シークレットの検証はスキップされます。セキュリティ体制を強化するために、クラスターの設定で指定されているシークレットのみを追加して、このポリシーステートメントの範囲を絞り込むことをお勧めします。

注記

既存の Amazon EFS ファイルシステムだけがクラスターで使用されるファイルシステムの場合、Amazon EFS ポリシーステートメントの例をクラスター設定ファイルの SharedStorage セクション で参照されている特定のファイルシステムに絞り込むことができます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:Describe*" ], "Resource": "*", "Effect": "Allow", "Sid": "EC2Read" }, { "Action": [ "ec2:AllocateAddress", "ec2:AssociateAddress", "ec2:AttachNetworkInterface", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateFleet", "ec2:CreateLaunchTemplate", "ec2:CreateLaunchTemplateVersion", "ec2:CreateNetworkInterface", "ec2:CreatePlacementGroup", "ec2:CreateSecurityGroup", "ec2:CreateSnapshot", "ec2:CreateTags", "ec2:DeleteTags", "ec2:CreateVolume", "ec2:DeleteLaunchTemplate", "ec2:DeleteNetworkInterface", "ec2:DeletePlacementGroup", "ec2:DeleteSecurityGroup", "ec2:DeleteVolume", "ec2:DisassociateAddress", "ec2:ModifyLaunchTemplate", "ec2:ModifyNetworkInterfaceAttribute", "ec2:ModifyVolume", "ec2:ModifyVolumeAttribute", "ec2:ReleaseAddress", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RunInstances", "ec2:TerminateInstances" ], "Resource": "*", "Effect": "Allow", "Sid": "EC2Write" }, { "Action": [ "dynamodb:DescribeTable", "dynamodb:ListTagsOfResource", "dynamodb:CreateTable", "dynamodb:DeleteTable", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:Query", "dynamodb:TagResource" ], "Resource": "arn:aws:dynamodb:*:<AWS ACCOUNT ID>:table/parallelcluster-*", "Effect": "Allow", "Sid": "DynamoDB" }, { "Action": [ "route53:ChangeResourceRecordSets", "route53:ChangeTagsForResource", "route53:CreateHostedZone", "route53:DeleteHostedZone", "route53:GetChange", "route53:GetHostedZone", "route53:ListResourceRecordSets", "route53:ListQueryLoggingConfigs" ], "Resource": "*", "Effect": "Allow", "Sid": "Route53HostedZones" }, { "Action": [ "cloudformation:*" ], "Resource": "*", "Effect": "Allow", "Sid": "CloudFormation" }, { "Action": [ "cloudwatch:PutDashboard", "cloudwatch:ListDashboards", "cloudwatch:DeleteDashboards", "cloudwatch:GetDashboard", "cloudwatch:PutMetricAlarm", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms" "cloudwatch:PutCompositeAlarm" ], "Resource": "*", "Effect": "Allow", "Sid": "CloudWatch" }, { "Action": [ "iam:GetRole", "iam:GetRolePolicy", "iam:GetPolicy", "iam:SimulatePrincipalPolicy", "iam:GetInstanceProfile" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:role/*", "arn:aws:iam::<AWS ACCOUNT ID>:policy/*", "arn:aws:iam::aws:policy/*", "arn:aws:iam::<AWS ACCOUNT ID>:instance-profile/*" ], "Effect": "Allow", "Sid": "IamRead" }, { "Action": [ "iam:CreateInstanceProfile", "iam:DeleteInstanceProfile", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:instance-profile/parallelcluster/*" ], "Effect": "Allow", "Sid": "IamInstanceProfile" }, { "Condition": { "StringEqualsIfExists": { "iam:PassedToService": [ "lambda.amazonaws.com", "ec2.amazonaws.com", "spotfleet.amazonaws.com" ] } }, "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*" ], "Effect": "Allow", "Sid": "IamPassRole" }, { "Action": [ "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunctionConfiguration", "lambda:GetFunction", "lambda:InvokeFunction", "lambda:AddPermission", "lambda:RemovePermission", "lambda:UpdateFunctionConfiguration", "lambda:TagResource", "lambda:ListTags", "lambda:UntagResource" ], "Resource": [ "arn:aws:lambda:*:<AWS ACCOUNT ID>:function:parallelcluster-*", "arn:aws:lambda:*:<AWS ACCOUNT ID>:function:pcluster-*" ], "Effect": "Allow", "Sid": "Lambda" }, { "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::parallelcluster-*", "arn:aws:s3:::aws-parallelcluster-*" ], "Effect": "Allow", "Sid": "S3ResourcesBucket" }, { "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::*-aws-parallelcluster*", "Effect": "Allow", "Sid": "S3ParallelClusterReadOnly" }, { "Action": [ "elasticfilesystem:*" ], "Resource": [ "arn:aws:elasticfilesystem:*:<AWS ACCOUNT ID>:*" ], "Effect": "Allow", "Sid": "EFS" }, { "Action": [ "logs:DeleteLogGroup", "logs:PutRetentionPolicy", "logs:DescribeLogGroups", "logs:CreateLogGroup", "logs:TagResource", "logs:UntagResource", "logs:FilterLogEvents", "logs:GetLogEvents", "logs:CreateExportTask", "logs:DescribeLogStreams", "logs:DescribeExportTasks", "logs:DescribeMetricFilters", "logs:PutMetricFilter", "logs:DeleteMetricFilter" ], "Resource": "*", "Effect": "Allow", "Sid": "CloudWatchLogs" }, { "Action": [ "resource-groups:ListGroupResources" ], "Resource": "*", "Effect": "Allow", "Sid": "ResourceGroupRead" }, { "Sid": "AllowDescribingFileCache", "Effect": "Allow", "Action": [ "fsx:DescribeFileCaches" ], "Resource": "*" }, { "Action": "secretsmanager:DescribeSecret", "Resource": "arn:aws:secretsmanager:<REGION>:<AWS ACCOUNT ID>:secret:<SECRET NAME>", "Effect": "Allow" } ] }

AWS Batch スケジューラを使用する際の AWS ParallelCluster pcluster ユーザーポリシーの追加

AWS Batch スケジューラを使用してクラスターを作成および管理する必要がある場合、以下の追加ポリシーが必要です。

{ "Version": "2012-10-17", "Statement": [ { "Condition": { "StringEqualsIfExists": { "iam:PassedToService": [ "ecs-tasks.amazonaws.com", "batch.amazonaws.com", "codebuild.amazonaws.com" ] } }, "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*" ], "Effect": "Allow", "Sid": "IamPassRole" }, { "Condition": { "StringEquals": { "iam:AWSServiceName": [ "batch.amazonaws.com" ] } }, "Action": [ "iam:CreateServiceLinkedRole", "iam:DeleteServiceLinkedRole" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:role/aws-service-role/batch.amazonaws.com/*" ], "Effect": "Allow" }, { "Action": [ "codebuild:*" ], "Resource": "arn:aws:codebuild:*:<AWS ACCOUNT ID>:project/pcluster-*", "Effect": "Allow" }, { "Action": [ "ecr:*" ], "Resource": "*", "Effect": "Allow", "Sid": "ECR" }, { "Action": [ "batch:*" ], "Resource": "*", "Effect": "Allow", "Sid": "Batch" }, { "Action": [ "events:*" ], "Resource": "*", "Effect": "Allow", "Sid": "AmazonCloudWatchEvents" }, { "Action": [ "ecs:DescribeContainerInstances", "ecs:ListContainerInstances" ], "Resource": "*", "Effect": "Allow", "Sid": "ECS" } ] }

Amazon FSx for Lustre を使用する場合の追加の AWS ParallelCluster pcluster ユーザーポリシー

Amazon FSx for Lustre を使用してクラスターを作成および管理する必要がある場合は、以下の追加ポリシーが必要です。

注記

既存の Amazon FSx ファイルシステムだけがクラスターで使用されるファイルシステムの場合、Amazon FSx ポリシーステートメントの例をクラスター設定ファイルの SharedStorage セクション で参照されている特定のファイルシステムに絞り込むことができます。

{ "Version": "2012-10-17", "Statement": [ { "Condition": { "StringEquals": { "iam:AWSServiceName": [ "fsx.amazonaws.com", "s3.data-source.lustre.fsx.amazonaws.com" ] } }, "Action": [ "iam:CreateServiceLinkedRole", "iam:DeleteServiceLinkedRole" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "fsx:*" ], "Resource": [ "arn:aws:fsx:*:<AWS ACCOUNT ID>:*" ], "Effect": "Allow", "Sid": "FSx" }, { "Action": [ "iam:CreateServiceLinkedRole", "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::<AWS ACCOUNT ID>:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/*", "Effect": "Allow" }, { "Action": [ "s3:Get*", "s3:List*", "s3:PutObject" ], "Resource": "arn:aws:s3:::<S3 NAME>", "Effect": "Allow" } ] }

AWS ParallelCluster のイメージビルドの pcluster ユーザーポリシー

AWS ParallelCluster を使用してカスタム Amazon EC2 イメージを作成するユーザーには、以下のアクセス許可のセットが必要です。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DescribeImages", "ec2:DescribeInstanceTypeOfferings", "ec2:DescribeInstanceTypes", "ec2:DeregisterImage", "ec2:DeleteSnapshot" ], "Resource": "*", "Effect": "Allow", "Sid": "EC2" }, { "Action": [ "iam:CreateInstanceProfile", "iam:AddRoleToInstanceProfile", "iam:GetRole", "iam:GetRolePolicy", "iam:GetInstanceProfile", "iam:RemoveRoleFromInstanceProfile" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:instance-profile/parallelcluster/*", "arn:aws:iam::<AWS ACCOUNT ID>:instance-profile/ParallelClusterImage*", "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*" ], "Effect": "Allow", "Sid": "IAM" }, { "Condition": { "StringEquals": { "iam:PassedToService": [ "lambda.amazonaws.com", "ec2.amazonaws.com" ] } }, "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:instance-profile/parallelcluster/*", "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*" ], "Effect": "Allow", "Sid": "IAMPassRole" }, { "Action": [ "logs:CreateLogGroup", "logs:TagResource", "logs:UntagResource", "logs:DeleteLogGroup" ], "Resource": [ "arn:aws:logs:*:<AWS ACCOUNT ID>:log-group:/aws/imagebuilder/ParallelClusterImage-*", "arn:aws:logs:*:<AWS ACCOUNT ID>:log-group:/aws/lambda/ParallelClusterImage-*" ], "Effect": "Allow", "Sid": "CloudWatch" }, { "Action": [ "cloudformation:DescribeStacks", "cloudformation:CreateStack", "cloudformation:DeleteStack" ], "Resource": [ "arn:aws:cloudformation:*:<AWS ACCOUNT ID>:stack/*" ], "Effect": "Allow", "Sid": "CloudFormation" }, { "Action": [ "lambda:CreateFunction", "lambda:GetFunction", "lambda:AddPermission", "lambda:RemovePermission", "lambda:DeleteFunction", "lambda:TagResource", "lambda:ListTags", "lambda:UntagResource" ], "Resource": [ "arn:aws:lambda:*:<AWS ACCOUNT ID>:function:ParallelClusterImage-*" ], "Effect": "Allow", "Sid": "Lambda" }, { "Action": [ "imagebuilder:Get*" ], "Resource": "*", "Effect": "Allow", "Sid": "ImageBuilderGet" }, { "Action": [ "imagebuilder:CreateImage", "imagebuilder:TagResource", "imagebuilder:CreateImageRecipe", "imagebuilder:CreateComponent", "imagebuilder:CreateDistributionConfiguration", "imagebuilder:CreateInfrastructureConfiguration", "imagebuilder:DeleteImage", "imagebuilder:DeleteComponent", "imagebuilder:DeleteImageRecipe", "imagebuilder:DeleteInfrastructureConfiguration", "imagebuilder:DeleteDistributionConfiguration" ], "Resource": [ "arn:aws:imagebuilder:*:<AWS ACCOUNT ID>:image/parallelclusterimage-*", "arn:aws:imagebuilder:*:<AWS ACCOUNT ID>:image-recipe/parallelclusterimage-*", "arn:aws:imagebuilder:*:<AWS ACCOUNT ID>:component/parallelclusterimage-*", "arn:aws:imagebuilder:*:<AWS ACCOUNT ID>:distribution-configuration/parallelclusterimage-*", "arn:aws:imagebuilder:*:<AWS ACCOUNT ID>:infrastructure-configuration/parallelclusterimage-*" ], "Effect": "Allow", "Sid": "ImageBuilder" }, { "Action": [ "s3:CreateBucket", "s3:ListBucket", "s3:ListBucketVersions" ], "Resource": [ "arn:aws:s3:::parallelcluster-*" ], "Effect": "Allow", "Sid": "S3Bucket" }, { "Action": [ "sns:GetTopicAttributes", "sns:TagResource", "sns:CreateTopic", "sns:Subscribe", "sns:Publish", "SNS:DeleteTopic", "SNS:Unsubscribe" ], "Resource": [ "arn:aws:sns:*:<AWS ACCOUNT ID>:ParallelClusterImage-*" ], "Effect": "Allow", "Sid": "SNS" }, { "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": [ "arn:aws:s3:::parallelcluster-*/*" ], "Effect": "Allow", "Sid": "S3Objects" }, { "Action": "iam:CreateServiceLinkedRole", "Effect": "Allow", "Resource": "arn:aws:iam::*:role/aws-service-role/imagebuilder.amazonaws.com/AWSServiceRoleForImageBuilder", "Condition": { "StringLike": { "iam:AWSServiceName": "imagebuilder.amazonaws.com" } } } ] }

IAM リソースを管理するための AWS ParallelCluster ユーザーサンプルポリシー

AWS ParallelCluster を使用してクラスターやカスタム AMI を作成する場合、AWS ParallelCluster コンポーネントに必要な一連の許可を付与するための権限を含む IAM ポリシーを提供する必要があります。これらの IAM リソースは、AWS ParallelCluster によって自動的に作成されるか、クラスターまたはカスタムイメージの作成時に入力として提供されます。

以下のモードを使用して、設定で追加の IAM ポリシーを使用して IAM リソースへのアクセスに必要なアクセス許可を AWS ParallelCluster ユーザーに付与できます。

特権 IAM アクセスモード

このモードでは、AWS ParallelCluster が、必要な IAM リソースを自動的に作成します。これらの IAM ポリシーは、クラスターリソースへのアクセスのみを可能にするように範囲が制限されています。

特権 IAM アクセスモードを有効にするには、ユーザーロールに以下のポリシーを追加します。

注記

HeadNode/Iam/AdditionalPolicies または Scheduling/SlurmQueues/Iam/AdditionalPolicies パラメータを設定する場合、以下のポリシーに示すように、追加ポリシーごとにロールポリシーをアタッチおよびデタッチする権限を AWS ParallelCluster ユーザーに付与する必要があります。ロールポリシーをアタッチおよびデタッチするための条件に、追加のポリシー ARN を追加します。

警告

このモードでは、ユーザーは AWS アカウントで IAM 管理者権限を持つことができます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iam:CreateServiceLinkedRole", "iam:DeleteRole", "iam:TagRole" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*" ], "Effect": "Allow", "Sid": "IamRole" }, { "Action": [ "iam:CreateRole" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*" ], "Effect": "Allow", "Sid": "IamCreateRole" }, { "Action": [ "iam:PutRolePolicy", "iam:DeleteRolePolicy" ], "Resource": "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*", "Effect": "Allow", "Sid": "IamInlinePolicy" }, { "Condition": { "ArnLike": { "iam:PolicyARN": [ "arn:aws:iam::<AWS ACCOUNT ID>:policy/parallelcluster*", "arn:aws:iam::<AWS ACCOUNT ID>:policy/parallelcluster/*", "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy", "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore", "arn:aws:iam::aws:policy/AWSBatchFullAccess", "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess", "arn:aws:iam::aws:policy/service-role/AWSBatchServiceRole", "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role", "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy", "arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole", "arn:aws:iam::aws:policy/EC2InstanceProfileForImageBuilder", "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" ] } }, "Action": [ "iam:AttachRolePolicy", "iam:DetachRolePolicy" ], "Resource": "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*", "Effect": "Allow", "Sid": "IamPolicy" } ] }

制限付き IAM アクセスモード

ユーザーに追加の IAM ポリシーが付与されていない場合、クラスターやカスタムイメージの構築に必要な IAM ロールは、管理者が手動で作成し、クラスター構成の一部として渡す必要があります。

クラスターを作成する際には、以下のパラメータが必要です。

カスタムイメージを構築する際には、以下のパラメータが必要です。

上記のパラメータの一部として渡された IAM ロールは、/parallelcluster/ パスのプレフィックスに作成する必要があります。これができない場合は、ユーザーポリシーを更新して、特定のカスタムロールに iam:PassRole アクセス許可を付与する必要があります (以下の例を参照)。

{ "Condition": { "StringEqualsIfExists": { "iam:PassedToService": [ "ecs-tasks.amazonaws.com", "lambda.amazonaws.com", "ec2.amazonaws.com", "spotfleet.amazonaws.com", "batch.amazonaws.com", "codebuild.amazonaws.com" ] } }, "Action": [ "iam:PassRole" ], "Resource": [ <list all custom IAM roles> ], "Effect": "Allow", "Sid": "IamPassRole" }
警告

現在、このモードでは AWS Batch クラスターの管理はできません。これは、クラスター構成ですべての IAM ロールを渡すことができないためです。

PermissionsBoundary モード

このモードでは、設定済みの IAM アクセス許可の境界にバインドされた IAM ロールの作成を AWS ParallelCluster に委任します。アクセス許可の境界の詳細については、「IAM ユーザーガイド」の「IAM エンティティのアクセス許可境界」を参照してください。

以下のポリシーを ユーザーロールに追加する必要があります。

ポリシーでは、<permissions-boundary-arn> を許可の境界として強制する IAM ポリシーの ARN に置き換えます。

警告

HeadNode/Iam/AdditionalPolicies または Scheduling/SlurmQueues/Iam/AdditionalPolicies パラメータを設定する場合、以下のポリシーに示すように、追加ポリシーごとにロールポリシーをアタッチおよびデタッチする権限をユーザーに付与する必要があります。ロールポリシーをアタッチおよびデタッチするための条件に、追加のポリシー ARN を追加します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iam:CreateServiceLinkedRole", "iam:DeleteRole", "iam:TagRole" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*" ], "Effect": "Allow", "Sid": "IamRole" }, { "Condition": { "StringEquals": { "iam:PermissionsBoundary": [ <permissions-boundary-arn> ] } }, "Action": [ "iam:CreateRole" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*" ], "Effect": "Allow", "Sid": "IamCreateRole" }, { "Condition": { "StringEquals": { "iam:PermissionsBoundary": [ <permissions-boundary-arn> ] } }, "Action": [ "iam:PutRolePolicy", "iam:DeleteRolePolicy" ], "Resource": "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*", "Effect": "Allow", "Sid": "IamInlinePolicy" }, { "Condition": { "StringEquals": { "iam:PermissionsBoundary": [ <permissions-boundary-arn> ] }, "ArnLike": { "iam:PolicyARN": [ "arn:aws:iam::<AWS ACCOUNT ID>:policy/parallelcluster*", "arn:aws:iam::<AWS ACCOUNT ID>:policy/parallelcluster/*", "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy", "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore", "arn:aws:iam::aws:policy/AWSBatchFullAccess", "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess", "arn:aws:iam::aws:policy/service-role/AWSBatchServiceRole", "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role", "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy", "arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole", "arn:aws:iam::aws:policy/EC2InstanceProfileForImageBuilder", "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" ] } }, "Action": [ "iam:AttachRolePolicy", "iam:DetachRolePolicy" ], "Resource": "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*", "Effect": "Allow", "Sid": "IamPolicy" } ] }

このモードを有効にすると、クラスターの作成または更新の際には Iam/PermissionsBoundary パラメータで、またカスタムイメージの構築の際にはBuild/Iam/PermissionBoundary パラメータで、アクセス許可の境界 ARN を指定する必要があります。

IAM アクセス許可を管理するための AWS ParallelCluster 設定パラメータ

AWS ParallelCluster は、クラスター内やカスタム AMI の作成プロセスで使用される IAM アクセス許可およびロールをカスタマイズおよび管理するための一連の設定オプションを公開しています。

クラスターの設定

ヘッドノードの IAM ロール

HeadNode / Iam / InstanceRole | InstanceProfile

このオプションでは、クラスターのヘッドノードに割り当てられているデフォルトの IAM ロールを上書きすることができます。詳細については、「InstanceProfile リファレンス」を参照してください。

スケジューラが Slurm の場合、このロールの一部として使用されるポリシーの最小セットを以下に示します。

  • arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy マネージド IAM ポリシー 詳細については、「Amazon CloudWatch ユーザーガイド」の「CloudWatch エージェントで使用する IAM ロールとユーザーを作成する」を参照してください。

  • arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore マネージド IAM ポリシー 詳細については、「AWS Systems Manager ユーザーガイド」の「AWS 用の管理ポリシー AWS Systems Manager」を参照してください。

  • 追加の IAM ポリシー:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::<REGION>-aws-parallelcluster/*", "arn:aws:s3:::dcv-license.<REGION>/*", "arn:aws:s3:::parallelcluster-*-v1-do-not-delete/*" ], "Effect": "Allow" }, { "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:BatchWriteItem", "dynamodb:BatchGetItem" ], "Resource": "arn:aws:dynamodb:<REGION>:<AWS ACCOUNT ID>:table/parallelcluster-*", "Effect": "Allow" }, { "Condition": { "StringEquals": { "ec2:ResourceTag/parallelcluster:node-type": "Compute" } }, "Action": "ec2:TerminateInstances", "Resource": "*", "Effect": "Allow" }, { "Action": [ "ec2:RunInstances", "ec2:CreateFleet" ] "Resource": "*", "Effect": "Allow" }, { "Condition": { "StringEquals": { "iam:PassedToService": [ "ec2.amazonaws.com" ] } }, "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*", "arn:aws:iam::<AWS ACCOUNT ID>:instance-profile/parallelcluster/*" ], "Effect": "Allow" }, { "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeVolumes", "ec2:DescribeInstanceAttribute", "ec2:DescribeCapacityReservations" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ec2:CreateTags", "ec2:AttachVolume" ], "Resource": [ "arn:aws:ec2:<REGION>:<AWS ACCOUNT ID>:instance/*", "arn:aws:ec2:<REGION>:<AWS ACCOUNT ID>:volume/*" ], "Effect": "Allow" }, { "Action": [ "cloudformation:DescribeStacks", "cloudformation:DescribeStackResource", "cloudformation:SignalResource" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "route53:ChangeResourceRecordSets" ], "Resource": "*", "Effect": "Allow" }, { "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<REGION>:<AWS ACCOUNT ID>:secret:<SECRET_ID>", "Effect": "Allow" } ] }

なお、Scheduling/SlurmQueues/Iam/InstanceRole がコンピューティング IAM ロールをオーバーライドするために使用されている場合、上記のヘッドノードポリシーでは、iam:PassRole アクセス許可の Resource セクションにそのようなロールを含める必要があります。

ここでは、スケジューラが AWS Batch である場合に、このロールの一部として使用されるポリシーの最小セットを示します。

  • arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy マネージド IAM ポリシー 詳細については、「Amazon CloudWatch ユーザーガイド」の「CloudWatch エージェントで使用する IAM ロールとユーザーを作成する」を参照してください。

  • arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore マネージド IAM ポリシー 詳細については、「AWS Systems Manager ユーザーガイド」の「AWS 用の管理ポリシー AWS Systems Manager」を参照してください。

  • 追加の IAM ポリシー:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::parallelcluster-*-v1-do-not-delete/*" ], "Effect": "Allow" }, { "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::dcv-license.<REGION>/*", "arn:aws:s3:::<REGION>-aws-parallelcluster/*" ], "Effect": "Allow" }, { "Condition": { "StringEquals": { "iam:PassedToService": [ "batch.amazonaws.com" ] } }, "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*", "arn:aws:iam::<AWS ACCOUNT ID>:instance-profile/parallelcluster/*" ], "Effect": "Allow" }, "Action": [ "batch:DescribeJobQueues", "batch:DescribeJobs", "batch:ListJobs", "batch:DescribeComputeEnvironments" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "batch:SubmitJob", "batch:TerminateJob", "logs:GetLogEvents", "ecs:ListContainerInstances", "ecs:DescribeContainerInstances", ], "Resource": [ "arn:aws:logs:<REGION>:<AWS ACCOUNT ID>:log-group:/aws/batch/job:log-stream:PclusterJobDefinition*", "arn:aws:ecs:<REGION>:<AWS ACCOUNT ID>:container-instance/AWSBatch-PclusterComputeEnviron*", "arn:aws:ecs:<REGION>:<AWS ACCOUNT ID>:cluster/AWSBatch-Pcluster*", "arn:aws:batch:<REGION>:<AWS ACCOUNT ID>:job-queue/PclusterJobQueue*", "arn:aws:batch:<REGION>:<AWS ACCOUNT ID>:job-definition/PclusterJobDefinition*:*", "arn:aws:batch:<REGION>:<AWS ACCOUNT ID>:job/*" ], "Effect": "Allow" }, { "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeVolumes", "ec2:DescribeInstanceAttribute" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ec2:CreateTags", "ec2:AttachVolume" ], "Resource": [ "arn:aws:ec2:<REGION>:<AWS ACCOUNT ID>:instance/*", "arn:aws:ec2:<REGION>:<AWS ACCOUNT ID>:volume/*" ], "Effect": "Allow" }, { "Action": [ "cloudformation:DescribeStackResource", "cloudformation:DescribeStacks", "cloudformation:SignalResource" ], "Resource": "*", "Effect": "Allow" }, { "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<REGION>:<AWS ACCOUNT ID>:secret:<SECRET_ID>", "Effect": "Allow" } ] }

Amazon S3 アクセス

HeadNode/Iam/S3Access または Scheduling/SlurmQueues/S3Access

これらの設定セクションでは、クラスターのヘッドノードまたはコンピューティングノードに関連する IAM ロールが AWS ParallelCluster によって作成された場合、そのロールに追加の Amazon S3 ポリシーを付与することで、Amazon S3 アクセスをカスタマイズすることができます。詳細については、各設定パラメータのリファレンスドキュメントを参照してください。

このパラメータは、ユーザーが 特権 IAM アクセスモード または PermissionsBoundary モード に設定されている場合にのみ使用できます。

追加の IAM ポリシー:

HeadNode/Iam/AdditionalIamPolicies または SlurmQueues/Iam/AdditionalIamPolicies

このオプションを使用して、クラスターのヘッドノードまたはコンピューティングノードに関連付けられている IAM ロールが AWS ParallelCluster によって作成された場合、そのロールに追加のマネージド IAM ポリシーをアタッチします。

警告

このオプションを使用するには、AWS ParallelCluster ユーザーに、アタッチする必要のある IAM ポリシーの iam:AttachRolePolicy および iam:DetachRolePolicy の権限が付与されていることを確認してください。

AWS Lambda 関数のロール

Iam / Roles / LambdaFunctionsRole

このオプションは、クラスター作成プロセスで使用されるすべての AWS Lambda 関数にアタッチされたロールをオーバーライドします。AWS Lambda は、そのロールを担うことができるプリンシパルとして設定する必要があります。

注記

DeploymentSettings/LambdaFunctionsVpcConfig が設定されている場合、LambdaFunctionsRole には VPC 設定を設定するための AWS Lambda ロールアクセス許可を含める必要があります。

ここでは、このロールの一部として使用されるポリシーの最小セットを示します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "route53:ListResourceRecordSets", "route53:ChangeResourceRecordSets" ], "Resource": "arn:aws:route53:::hostedzone/*", "Effect": "Allow" }, { "Action": ["logs:CreateLogStream", "logs:PutLogEvents"], "Effect": "Allow", "Resource": "arn:aws:logs:<REGION>:<AWS ACCOUNT ID>:log-group:/aws/lambda/pcluster-*" }, { "Action": "ec2:DescribeInstances", "Effect": "Allow", "Resource": "*" }, { "Action": "ec2:TerminateInstances", "Condition": { "StringEquals": { "ec2:ResourceTag/parallelcluster:node-type": "Compute" } }, "Effect": "Allow", "Resource": "*" }, { "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:ListBucket", "s3:ListBucketVersions" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::parallelcluster-*-v1-do-not-delete", "arn:aws:s3:::parallelcluster-*-v1-do-not-delete/*" ] } ] }

コンピューティングノードの IAM ロール

Scheduling / SlurmQueues / Iam / InstanceRole | InstanceProfile

このオプションでは、クラスターのコンピューティングノードに割り当てられている IAM ロールを上書きすることができます。詳細については、「InstanceProfile」を参照してください。

ここでは、このロールの一部として使用されるポリシーの最小セットを示します。

  • arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy マネージド IAM ポリシー 詳細については、「Amazon CloudWatch ユーザーガイド」の「CloudWatch エージェントで使用する IAM ロールとユーザーを作成する」を参照してください。

  • arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore マネージド IAM ポリシー 詳細については、「AWS Systems Manager ユーザーガイド」の「AWS 用の管理ポリシー AWS Systems Manager」を参照してください。

  • 追加の IAM ポリシー:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "dynamodb:Query", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem" ], "Resource": "arn:aws:dynamodb:<REGION>:<AWS ACCOUNT ID>:table/parallelcluster-*", "Effect": "Allow" }, { "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::<REGION>-aws-parallelcluster/*" ], "Effect": "Allow" }, { "Action": "ec2:DescribeInstanceAttribute", "Resource": "*", "Effect": "Allow" }, { "Action": "cloudformation:DescribeStackResource", "Resource": [ "arn:aws:cloudformation:<REGION>:<AWS ACCOUNT ID>:stack/*/*" ], "Effect" "Allow" } ] }

アクセス許可の境界

Iam / PermissionsBoundary

このパラメータは、AWS ParallelCluster がクラスター展開の一部として作成されたすべての IAM ロールに PermissionsBoundary として指定された IAM ポリシーをアタッチするように強制します。

この設定を定義する際にユーザーが必要とするポリシーのリストについては、PermissionsBoundary モード を参照してください。

カスタムイメージ構成

EC2 Image Builder のインスタンスロール

Build / Iam / InstanceRole | InstanceProfile

このオプションでは、EC2 Image Builder で起動した Amazon EC2 インスタンスに割り当てられている IAM ロールを上書きして、カスタム AMI を作成できます。

ここでは、このロールの一部として使用されるポリシーの最小セットを示します。

  • arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore マネージド IAM ポリシー 詳細については、「AWS Systems Manager ユーザーガイド」の「AWS 用の管理ポリシー AWS Systems Manager」を参照してください。

  • arn:aws:iam::aws:policy/EC2InstanceProfileForImageBuilder マネージド IAM ポリシー 詳細については、「Image Builder ユーザーガイド」の「EC2InstanceProfileForImageBuilder policy」を参照してください。

  • 追加の IAM ポリシー:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateTags", "ec2:ModifyImageAttribute" ], "Resource": "arn:aws:ec2:<REGION>::image/*", "Effect": "Allow" } ] }

AWS Lambda クリーンアップロール

Build / Iam / CleanupLambdaRole

このオプションは、カスタムイメージ構築プロセスで使用されるすべての AWS Lambda 機能に付随するロールをオーバーライドします。AWS Lambda は、そのロールを担うことができるプリンシパルとして設定する必要があります。

注記

DeploymentSettings/LambdaFunctionsVpcConfig が設定されている場合、CleanupLambdaRole には VPC 設定を設定するための AWS Lambda ロールのアクセス許可を含める必要があります。

ここでは、このロールの一部として使用されるポリシーの最小セットを示します。

  • arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole マネージド IAM ポリシー 詳細については、「AWS Lambda 開発者ガイド」の「Lambda 機能の AWS マネージドポリシー」を参照してください。

  • 追加の IAM ポリシー:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "iam:DetachRolePolicy", "iam:DeleteRole", "iam:DeleteRolePolicy" ], "Resource": "arn:aws:iam::<AWS ACCOUNT ID>:role/parallelcluster/*", "Effect": "Allow" }, { "Action": [ "iam:DeleteInstanceProfile", "iam:RemoveRoleFromInstanceProfile" ], "Resource": "arn:aws:iam::<AWS ACCOUNT ID>:instance-profile/parallelcluster/*", "Effect": "Allow" }, { "Action": "imagebuilder:DeleteInfrastructureConfiguration", "Resource": "arn:aws:imagebuilder:<REGION>:<AWS ACCOUNT ID>:infrastructure-configuration/parallelclusterimage-*", "Effect": "Allow" }, { "Action": [ "imagebuilder:DeleteComponent" ], "Resource": [ "arn:aws:imagebuilder:<REGION>:<AWS ACCOUNT ID>:component/parallelclusterimage-*/*" ], "Effect": "Allow" }, { "Action": "imagebuilder:DeleteImageRecipe", "Resource": "arn:aws:imagebuilder:<REGION>:<AWS ACCOUNT ID>:image-recipe/parallelclusterimage-*/*", "Effect": "Allow" }, { "Action": "imagebuilder:DeleteDistributionConfiguration", "Resource": "arn:aws:imagebuilder:<REGION>:<AWS ACCOUNT ID>:distribution-configuration/parallelclusterimage-*", "Effect": "Allow" }, { "Action": [ "imagebuilder:DeleteImage", "imagebuilder:GetImage", "imagebuilder:CancelImageCreation" ], "Resource": "arn:aws:imagebuilder:<REGION>:<AWS ACCOUNT ID>:image/parallelclusterimage-*/*", "Effect": "Allow" }, { "Action": "cloudformation:DeleteStack", "Resource": "arn:aws:cloudformation:<REGION>:<AWS ACCOUNT ID>:stack/*/*", "Effect": "Allow" }, { "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:<REGION>::image/*", "Effect": "Allow" }, { "Action": "tag:TagResources", "Resource": "*", "Effect": "Allow" }, { "Action": [ "lambda:DeleteFunction", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:<REGION>:<AWS ACCOUNT ID>:function:ParallelClusterImage-*", "Effect": "Allow" }, { "Action": "logs:DeleteLogGroup", "Resource": "arn:aws:logs:<REGION>:<AWS ACCOUNT ID>:log-group:/aws/lambda/ParallelClusterImage-*:*", "Effect": "Allow" }, { "Action": [ "SNS:GetTopicAttributes", "SNS:DeleteTopic", "SNS:GetSubscriptionAttributes", "SNS:Unsubscribe" ], "Resource": "arn:aws:sns:<REGION>:<AWS ACCOUNT ID>:ParallelClusterImage-*", "Effect": "Allow" } ] }

追加の IAM ポリシー

Build / Iam / AdditionalIamPolicies

このオプションを使用して、EC2 Image Builder がカスタム AMI を生成するために使用する Amazon EC2 インスタンスに関連付けられたロールに、追加のマネージド IAM ポリシーをアタッチします。

警告

このオプションを使用するには、AWS ParallelCluster ユーザーに、アタッチする必要のある IAM ポリシーの iam:AttachRolePolicy および iam:DetachRolePolicy の権限が付与されていることを確認してください。

アクセス許可の境界

Build / Iam / PermissionsBoundary

このパラメータは、AWS ParallelCluster がカスタム AMI ビルドの一部として作成されるすべての IAM ロールに PermissionsBoundary として指定された IAM ポリシーをアタッチするように強制します。

このような機能を使用するために必要となるポリシーのリストについては、「PermissionsBoundary モード」を参照してください。