AWS Identity and Access Management autorisations dans AWS ParallelCluster - AWS ParallelCluster

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS Identity and Access Management autorisations dans AWS ParallelCluster

AWS ParallelCluster utilise les autorisations IAM pour contrôler l'accès aux ressources lors de la création et de la gestion des clusters.

Pour créer et gérer des clusters dans un AWS compte, des AWS ParallelCluster autorisations à deux niveaux sont nécessaires :
  • Autorisations dont l'pclusterutilisateur a besoin pour appeler les commandes de la pcluster CLI pour créer et gérer des clusters.

  • Autorisations dont les ressources du cluster ont besoin pour effectuer des actions de cluster.

AWS ParallelCluster utilise un profil et un rôle d'instance Amazon EC2 pour fournir des autorisations de ressources de cluster. Pour gérer les autorisations des ressources du cluster, il faut AWS ParallelCluster également des autorisations pour les ressources IAM. Pour plus d’informations, consultez AWS ParallelCluster exemples de politiques utilisateur pour la gestion des ressources IAM.

pclusterles utilisateurs ont besoin d'autorisations IAM pour utiliser la pcluster CLI afin de créer et de gérer un cluster et ses ressources. Ces autorisations sont incluses dans les politiques IAM qui peuvent être ajoutées à un utilisateur ou à un rôle. Pour plus d'informations sur les rôles IAM, consultez la section Création d'un rôle utilisateur dans le Guide de l'AWS Identity and Access Management utilisateur.

Vous pouvez également utiliser AWS ParallelCluster paramètres de configuration pour gérer les autorisations IAM.

Les sections suivantes contiennent les autorisations requises avec des exemples.

Pour utiliser les exemples de politiques, remplacez <REGION><AWS ACCOUNT ID>, et les chaînes similaires par les valeurs appropriées.

Les exemples de politiques suivants incluent les Amazon Resource Names (ARN) pour les ressources. Si vous travaillez dans les partitions AWS GovCloud (US) ou AWS China, les ARN doivent être modifiés. Plus précisément, ils doivent être remplacés par « arn:aws » par « arn : aws-us-gov » pour la AWS GovCloud (US) partition ou « arn:aws-cn » pour la partition chinoise. AWS Pour plus d'informations, consultez Amazon Resource Names (ARN) dans AWS GovCloud (US) les régions dans le guide de AWS GovCloud (US) l'utilisateur et ARN pour les AWS services en Chine dans Getting Started with AWS services in China.

Vous pouvez suivre les modifications apportées aux exemples de politiques dans AWS ParallelCluster la documentation sur GitHub.

AWS ParallelCluster Rôles d'instance Amazon EC2

Lorsque vous créez un cluster avec les paramètres de configuration par défaut, AWS ParallelCluster vous utilisez les profils d'instance Amazon EC2 pour créer automatiquement un rôle d'instance Amazon EC2 par défaut qui fournit les autorisations requises pour créer et gérer le cluster et ses ressources.

Alternatives à l'utilisation du rôle d' AWS ParallelCluster instance par défaut

À la place du rôle d' AWS ParallelCluster instance par défaut, vous pouvez utiliser le paramètre de configuration du InstanceRole cluster pour spécifier votre propre rôle IAM existant pour EC2. Pour plus d’informations, consultez AWS ParallelCluster paramètres de configuration pour gérer les autorisations IAM. Généralement, vous spécifiez les rôles IAM existants pour contrôler entièrement les autorisations accordées à EC2.

Si votre intention est d'ajouter des politiques supplémentaires au rôle d'instance par défaut, nous vous recommandons de transmettre les politiques IAM supplémentaires en utilisant le paramètre de AdditionalIamPoliciesInstanceProfileconfiguration plutôt que InstanceRole les paramètres. Vous pouvez mettre à jour AdditionalIamPolicies lorsque vous mettez à jour votre cluster, mais vous ne pouvez pas le mettre à jour InstanceRole lorsque vous mettez à jour votre cluster.

AWS ParallelCluster exemples de politiques pcluster utilisateur

Les exemples suivants montrent les politiques utilisateur requises pour créer AWS ParallelCluster et gérer ses ressources à l'aide de la pcluster CLI. Vous pouvez associer des politiques à un utilisateur ou à un rôle.

Politique AWS ParallelCluster pcluster utilisateur de base

La politique suivante indique les autorisations requises pour exécuter AWS ParallelCluster pcluster des commandes.

La dernière action répertoriée dans la politique est incluse pour valider tous les secrets spécifiés dans la configuration du cluster. Par exemple, un AWS Secrets Manager secret est utilisé pour configurer l'DirectoryServiceintégration. Dans ce cas, un cluster n'est créé que s'il existe un secret valide dans le PasswordSecretArn. Si cette action est omise, la validation secrète est ignorée. Pour améliorer votre niveau de sécurité, nous vous recommandons de limiter la portée de cette déclaration de politique en ajoutant uniquement les secrets spécifiés dans la configuration de votre cluster.

Note

Si les systèmes de fichiers Amazon EFS existants sont les seuls systèmes de fichiers utilisés dans votre cluster, vous pouvez appliquer les exemples de déclarations de politique Amazon EFS aux systèmes de fichiers spécifiques référencés dans le fichier SharedStorage Section de configuration du cluster.

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

Politique AWS ParallelCluster pcluster utilisateur supplémentaire lors de l'utilisation du AWS Batch planificateur

Si vous devez créer et gérer un cluster avec un AWS Batch planificateur, la politique supplémentaire suivante est requise.

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

Politique AWS ParallelCluster pcluster utilisateur supplémentaire lors de l'utilisation d'Amazon FSx for Lustre

Si vous devez créer et gérer un cluster avec Amazon FSx for Lustre, la politique supplémentaire suivante est requise.

Note

Si les systèmes de fichiers Amazon FSx existants sont les seuls systèmes de fichiers utilisés dans votre cluster, vous pouvez appliquer les exemples de déclarations de politique Amazon FSx aux systèmes de fichiers spécifiques référencés dans le fichier de configuration SharedStorage Section du cluster.

{ "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 politique pcluster utilisateur de création d'images

Les utilisateurs qui ont l'intention de créer des images Amazon EC2 personnalisées AWS ParallelCluster doivent disposer des autorisations suivantes.

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

AWS ParallelCluster exemples de politiques utilisateur pour la gestion des ressources IAM

Lors AWS ParallelCluster de l'utilisation pour créer des clusters ou des AMI personnalisées, des politiques IAM doivent être fournies qui contiennent des autorisations permettant d'accorder l'ensemble d'autorisations requis aux AWS ParallelCluster composants. Ces ressources IAM peuvent être créées automatiquement AWS ParallelCluster ou fournies en entrée lors de la création d'un cluster ou d'une image personnalisée.

Vous pouvez utiliser les modes suivants pour fournir à l' AWS ParallelCluster utilisateur les autorisations nécessaires pour accéder aux ressources IAM en utilisant des politiques IAM supplémentaires dans la configuration.

Mode d'accès IAM privilégié

Avec ce mode, crée AWS ParallelCluster automatiquement toutes les ressources IAM nécessaires. Ces politiques IAM sont limitées pour permettre l'accès aux ressources du cluster uniquement.

Pour activer le mode d'accès privilégié IAM, ajoutez la politique suivante au rôle d'utilisateur.

Note

Si vous configurez HeadNodeles AdditionalPoliciesparamètres Scheduling/SlurmQueues/AdditionalPoliciesou Iam///, vous devez autoriser l' AWS ParallelCluster utilisateur à associer et détacher des politiques de rôle pour chaque politique supplémentaire, comme indiqué dans la politique suivante. Iam Ajoutez les ARN de politique supplémentaires à la condition d'attachement et de détachement des politiques de rôle.

Avertissement

Ce mode permet à l'utilisateur de disposer des privilèges d'administrateur IAM dans Compte AWS

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

Mode d'accès IAM restreint

Lorsqu'aucune politique IAM supplémentaire n'est accordée à l'utilisateur, les rôles IAM requis par les clusters ou la création d'images personnalisées doivent être créés manuellement par un administrateur et transmis dans le cadre de la configuration du cluster.

Lors de la création d'un cluster, les paramètres suivants sont requis :

Lors de la création d'une image personnalisée, les paramètres suivants sont requis :

Les rôles IAM transmis dans le cadre des paramètres listés ci-dessus doivent être créés dans le préfixe de /parallelcluster/ chemin. Si cela n'est pas possible, la politique utilisateur doit être mise à jour pour accorder des iam:PassRole autorisations sur les rôles personnalisés spécifiques, comme dans l'exemple suivant.

{ "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" }
Avertissement

Actuellement, ce mode n'autorise pas la gestion des AWS Batch clusters car tous les rôles IAM ne peuvent pas être transmis dans la configuration du cluster.

Mode PermissionsBoundary

Ce mode délègue AWS ParallelCluster la création de rôles IAM liés à la limite d'autorisations IAM configurée. Pour plus d'informations sur les limites des autorisations IAM, consultez la section Limites des autorisations pour les entités IAM dans le guide de l'utilisateur IAM.

La politique suivante doit être ajoutée au rôle d'utilisateur.

Dans la politique, remplacez < permissions-boundary-arn > par l'ARN de la politique IAM à appliquer comme limite d'autorisations.

Avertissement

Si vous configurez les AdditionalPoliciesparamètres HeadNodeIam//AdditionalPoliciesou Scheduling/SlurmQueues/Iam/, vous devez accorder à l'utilisateur l'autorisation d'attacher et de détacher des politiques de rôle pour chaque politique supplémentaire, comme indiqué dans la politique suivante. Ajoutez les ARN de politique supplémentaires à la condition d'attachement et de détachement des politiques de rôle.

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

Lorsque ce mode est activé, vous devez spécifier l'ARN de la limite d'autorisations dans le paramètre Iam/PermissionsBoundaryconfiguration lors de la création ou de la mise à jour d'un cluster et dans le PermissionBoundaryparamètre BuildIam//lors de la création d'une image personnalisée.

AWS ParallelCluster paramètres de configuration pour gérer les autorisations IAM

AWS ParallelCluster expose une série d'options de configuration permettant de personnaliser et de gérer les autorisations et les rôles IAM utilisés dans un cluster ou lors du processus de création d'une AMI personnalisée.

Configuration de cluster

Rôle IAM du nœud principal

HeadNode / Iam / InstanceRole | InstanceProfile

Avec cette option, vous remplacez le rôle IAM par défaut attribué au nœud principal du cluster. Pour plus de détails, veuillez vous référer à la InstanceProfileréférence.

Voici l'ensemble minimal de politiques à utiliser dans le cadre de ce rôle lorsque le planificateur est Slurm :

  • arn:aws:iam::aws:policy/CloudWatchAgentServerPolicypolitique IAM gérée. Pour plus d'informations, consultez la section Créer des rôles et des utilisateurs IAM à utiliser avec l' CloudWatch agent dans le guide de l' CloudWatch utilisateur Amazon.

  • arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCorepolitique IAM gérée. Pour plus d'informations, consultez les politiques AWS gérées AWS Systems Manager dans le guide de AWS Systems Manager l'utilisateur.

  • Politique IAM supplémentaire :

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

Notez que dans le cas où SchedulingSlurmQueues/Iam//InstanceRoleest utilisé pour remplacer le rôle IAM de calcul, la politique du nœud principal décrite ci-dessus doit inclure ce rôle dans la Resource section de l'iam:PassRoleautorisation.

Voici l'ensemble minimal de politiques à utiliser dans le cadre de ce rôle lorsque le planificateur est : AWS Batch

  • arn:aws:iam::aws:policy/CloudWatchAgentServerPolicypolitique IAM gérée. Pour plus d'informations, consultez la section Créer des rôles et des utilisateurs IAM à utiliser avec l' CloudWatch agent dans le guide de l' CloudWatch utilisateur Amazon.

  • arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCorepolitique IAM gérée. Pour plus d'informations, consultez les politiques AWS gérées AWS Systems Manager dans le guide de AWS Systems Manager l'utilisateur.

  • Politique IAM supplémentaire :

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

Accès à Amazon S3

HeadNode/Iam/S3Accessou Scheduling/SlurmQueues/S3Access

Dans ces sections de configuration, vous pouvez personnaliser l'accès Amazon S3 en accordant des politiques Amazon S3 supplémentaires aux rôles IAM associés au nœud principal ou aux nœuds de calcul du cluster lorsque ces rôles sont créés par AWS ParallelCluster. Pour plus d'informations, consultez la documentation de référence pour chacun des paramètres de configuration.

Ce paramètre ne peut être utilisé que lorsque l'utilisateur est configuré avec Mode d'accès IAM privilégié ouMode PermissionsBoundary.

Politiques IAM supplémentaires

HeadNode/Iam/AdditionalIamPoliciesou SlurmQueues/Iam/AdditionalIamPolicies

Utilisez cette option pour associer des politiques IAM gérées supplémentaires aux rôles IAM associés au nœud principal ou aux nœuds de calcul du cluster lorsque ces rôles sont créés par. AWS ParallelCluster

Avertissement

Pour utiliser cette option, assurez-vous que l'AWS ParallelCluster utilisateur iam:DetachRolePolicy dispose iam:AttachRolePolicy des autorisations nécessaires pour les politiques IAM qui doivent être associées.

AWS Lambda fonctions (rôle)

Iam / Roles / LambdaFunctionsRole

Cette option remplace le rôle attaché à toutes les AWS Lambda fonctions utilisées lors du processus de création du cluster. AWS Lambda doit être configuré en tant que principal autorisé à assumer le rôle.

Note

Si DeploymentSettings/LambdaFunctionsVpcConfigest défini, LambdaFunctionsRole il doit inclure l'autorisation de AWS Lambda rôle pour définir la configuration du VPC.

Voici l'ensemble minimal de politiques à utiliser dans le cadre de ce rôle :

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

Rôle IAM des nœuds de calcul

Scheduling / SlurmQueues / Iam / InstanceRole | InstanceProfile

Cette option permet de remplacer le rôle IAM attribué aux nœuds de calcul du cluster. Pour plus d’informations, consultez InstanceProfile.

Voici l'ensemble minimal de politiques à utiliser dans le cadre de ce rôle :

  • arn:aws:iam::aws:policy/CloudWatchAgentServerPolicypolitique IAM gérée. Pour plus d'informations, consultez la section Créer des rôles et des utilisateurs IAM à utiliser avec l' CloudWatchagent dans le guide de l' CloudWatch utilisateur Amazon.

  • arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCorepolitique IAM gérée. Pour plus d'informations, consultez les politiques AWS gérées AWS Systems Manager dans le guide de AWS Systems Manager l'utilisateur.

  • Politique IAM supplémentaire :

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

Limite d'autorisations

Iam / PermissionsBoundary

Ce paramètre oblige AWS ParallelCluster à associer la politique IAM donnée PermissionsBoundary à tous les rôles IAM créés dans le cadre d'un déploiement de cluster.

Consultez Mode PermissionsBoundary la liste des politiques requises par l'utilisateur lorsque ce paramètre est défini.

Configuration d'image personnalisée

Rôle d'instance pour EC2 Image Builder

Build / Iam / InstanceRole | InstanceProfile

Cette option vous permet de remplacer le rôle IAM attribué à l'instance Amazon EC2 lancée par EC2 Image Builder pour créer une AMI personnalisée.

Voici l'ensemble minimal de politiques à utiliser dans le cadre de ce rôle :

  • arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCorepolitique IAM gérée. Pour plus d'informations, consultez les politiques AWS gérées AWS Systems Manager dans le guide de AWS Systems Manager l'utilisateur.

  • arn:aws:iam::aws:policy/EC2InstanceProfileForImageBuilderpolitique IAM gérée. Pour plus d'informations, consultez la EC2InstanceProfileForImageBuilderpolitique dans le guide de l'utilisateur d'Image Builder.

  • Politique IAM supplémentaire :

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

AWS Lambda rôle de nettoyage

Build / Iam / CleanupLambdaRole

Cette option remplace le rôle attaché à toutes les AWS Lambda fonctions utilisées lors du processus de création d'image personnalisée. AWS Lambda doit être configuré en tant que principal autorisé à assumer le rôle.

Note

Si DeploymentSettings/LambdaFunctionsVpcConfigest défini, CleanupLambdaRole il doit inclure l'autorisation de AWS Lambda rôle pour définir la configuration du VPC.

Voici l'ensemble minimal de politiques à utiliser dans le cadre de ce rôle :

  • arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRolepolitique IAM gérée. Pour plus d'informations, consultez la section Politiques AWS gérées pour les fonctionnalités Lambda dans le Guide du AWS Lambda développeur.

  • Politique IAM supplémentaire :

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

Politiques IAM supplémentaires

Build / Iam / AdditionalIamPolicies

Vous utilisez cette option pour associer des politiques IAM gérées supplémentaires au rôle associé à l'instance Amazon EC2 utilisée par EC2 Image Builder pour produire l'AMI personnalisée.

Avertissement

Pour utiliser cette option, assurez-vous que l'AWS ParallelCluster utilisateur iam:DetachRolePolicy dispose iam:AttachRolePolicy des autorisations nécessaires pour les politiques IAM qui doivent être associées.

Limite d'autorisations

Build / Iam / PermissionsBoundary

Ce paramètre oblige AWS ParallelCluster à associer la politique IAM donnée PermissionsBoundary à tous les rôles IAM créés dans le cadre de la création d'une AMI personnalisée.

Consultez Mode PermissionsBoundary la liste des politiques requises pour utiliser ces fonctionnalités.