Permissões AWS Identity and Access Management no AWS ParallelCluster - AWS ParallelCluster

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Permissões AWS Identity and Access Management no AWS ParallelCluster

O AWS ParallelCluster usa permissões do IAM para controlar o acesso aos recursos ao criar e gerenciar clusters.

Para criar e gerenciar clusters em uma conta da AWS, o AWS ParallelCluster requer permissões em dois níveis:
  • Permissões que o usuário pcluster precisa para invocar os comandos pcluster da CLI para criar e gerenciar clusters.

  • Permissões que os recursos do cluster exigem para realizar ações do cluster.

O AWS ParallelCluster usa um perfil de instância do Amazon EC2 e uma função para fornecer permissões de recursos de cluster. Para gerenciar as permissões dos recursos do cluster, o AWS ParallelCluster também exige permissões para os recursos do IAM. Para ter mais informações, consulte Políticas de exemplo de usuário do AWS ParallelCluster para gerenciar recursos do IAM.

Os usuários do pcluster exigem permissões do IAM para usar a CLI pcluster para criar e gerenciar um cluster e seus recursos. Essas permissões estão incluídas nas políticas do IAM que podem ser adicionadas a um usuário ou perfil. Para obter mais informações sobre perfis do IAM, consulte Criar um perfil de usuário no AWS Identity and Access ManagementGuia do usuário do IAM.

Você também pode usar Parâmetros de configuração do AWS ParallelCluster para gerenciar permissões do IAM.

As seções a seguir contêm as permissões necessárias com exemplos.

Para usar as políticas de exemplo, substitua <REGION>, <AWS ACCOUNT ID> e cadeias de caracteres semelhantes pelos valores apropriados.

Os exemplos de políticas a seguir incluem nomes de recursos da Amazon (ARNs) para os recursos. Se você estiver trabalhando nas partições AWS GovCloud (US) ou na AWS China, os ARNs devem ser alterados. Especificamente, eles devem ser alterados de “arn:aws” para “arn:aws-us-gov” para a partição AWS GovCloud (US) ou “arn:aws-cn” para a partição da China da AWS. Para obter mais informações, consulte Nomes de recursos da Amazon (ARNs) em regiões AWS GovCloud (US) no Guia do usuário do AWS GovCloud (US) e ARNs para serviços AWS na China em Introdução aos serviços AWS na China.

Você pode acompanhar as alterações nas políticas de exemplo na documentação do AWS ParallelCluster no GitHub.

Perfis de instância do Amazon EC2 no AWS ParallelCluster

Quando você cria um cluster com as configurações padrão, AWS ParallelCluster usa perfis de instância do Amazon EC2 para criar automaticamente uma função de instância do Amazon EC2 de cluster padrão, que fornece as permissões necessárias para criar e gerenciar o cluster e os recursos contidos nele.

Alternativas ao uso da função de instância padrão do AWS ParallelCluster

No lugar da função de instância AWS ParallelCluster padrão, você pode usar a definição de configuração do cluster InstanceRole para especificar seu próprio perfil do IAM existente para o EC2. Para ter mais informações, consulte Parâmetros de configuração do AWS ParallelCluster para gerenciar permissões do IAM. Normalmente, você especifica os perfis do IAM existentes para controlar totalmente as permissões concedidas ao EC2.

Se sua intenção é adicionar políticas extras à função de instância padrão, recomendamos que você transmita as políticas adicionais do IAM com a configuração AdditionalIamPolicies em vez de usar as configurações InstanceProfile ou InstanceRole. Você pode atualizar AdditionalIamPolicies quando atualizar seu cluster, mas não pode atualizar InstanceRole quando atualizar seu cluster.

Exemplo do AWS ParallelCluster de políticas de usuário pcluster

Os exemplos a seguir mostram as políticas de usuário necessárias para criar e gerenciar AWS ParallelCluster e seus recursos usando a CLI pcluster. Agora você pode anexar a política a um usuário ou um perfil.

Política básica de usuário pcluster do AWS ParallelCluster

A política a seguir mostra as permissões necessárias para executar comandos pcluster do AWS ParallelCluster.

A última ação listada na política está incluída para fornecer validação de todos os segredos especificados na configuração do cluster. Por exemplo, um segredo AWS Secrets Manager é usado para configurar a integração DirectoryService. Nesse caso, um cluster é criado somente se existir um segredo válido em PasswordSecretArn. Se essa ação for omitida, a validação secreta será ignorada. Para melhorar sua postura de segurança, recomendamos que você defina o escopo dessa declaração de política adicionando somente os segredos especificados na configuração do cluster.

nota

Se os sistemas de arquivos Amazon EFS existentes forem os únicos sistemas de arquivos usados em seu cluster, você poderá definir o escopo dos exemplos de declarações de política do Amazon EFS para os sistemas de arquivos específicos referenciados no arquivo Seção SharedStorage de configuração do 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" } ] }

Política de usuário adicional pcluster do AWS ParallelCluster ao usar o programador AWS Batch

Caso você precise criar e gerenciar um cluster com o programador AWS Batch, a seguinte política adicional é necessária.

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

Política de usuário adicional pcluster do AWS ParallelCluster ao usar o Amazon FSx para Lustre

Caso você precise criar e gerenciar um cluster com o Amazon FSx para Lustre, a seguinte política adicional é necessária.

nota

Se os sistemas de arquivos Amazon FSx existentes forem os únicos sistemas de arquivos usados em seu cluster, você poderá definir o escopo dos exemplos de declarações de política do Amazon FSx para os sistemas de arquivos específicos referenciados no arquivo Seção SharedStorage de configuração do 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" } ] }

Política de usuário pcluster de criação de imagens do AWS ParallelCluster

Os usuários que pretendem criar imagens personalizadas do Amazon EC2 com AWS ParallelCluster devem ter o seguinte conjunto de permissões.

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

Políticas de exemplo de usuário do AWS ParallelCluster para gerenciar recursos do IAM

Ao usar o AWS ParallelCluster para criar clusters ou AMIs personalizadas, é necessário fornecer políticas do IAM que contenham permissões para conceder o conjunto necessário de permissões aos componentes do AWS ParallelCluster. Esses recursos do IAM podem ser criados automaticamente pelo AWS ParallelCluster ou fornecidos como entrada ao criar um cluster ou uma imagem personalizada.

Você pode usar os modos a seguir para fornecer ao usuário do AWS ParallelCluster as permissões necessárias para acessar os recursos do IAM usando políticas adicionais do IAM na configuração.

Modo de acesso privilegiado do IAM

Com esse modo, o AWS ParallelCluster cria automaticamente todos os recursos do IAM necessários. Essas políticas do IAM têm um escopo reduzido para permitir o acesso somente aos recursos do cluster.

Para ativar o modo de acesso privilegiado do IAM, adicione a política a seguir à função do usuário.

nota

Se você configurar os parâmetros HeadNode / Iam / AdditionalPolicies ou Scheduling / SlurmQueues / Iam / AdditionalPolicies, deverá fornecer ao usuário AWS ParallelCluster permissão para anexar e desanexar políticas de função para cada política adicional, conforme mostrado na política a seguir. Adicione os ARNs de política adicionais à condição para anexar e desanexar políticas de função.

Atenção

Esse modo permite que o usuário tenha privilégios de administrador do IAM no Conta da 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" } ] }

Modo de acesso restrito do IAM

Quando nenhuma política adicional do IAM é concedida ao usuário, os perfis do IAM exigidos pelos clusters ou pela criação de imagens personalizadas precisam ser criados manualmente por um administrador e passados como parte da configuração do cluster.

Ao criar um cluster, os seguintes parâmetros são obrigatórios:

Ao criar uma imagem personalizada, os seguintes parâmetros são obrigatórios:

Os perfis do IAM passados como parte dos parâmetros listados acima devem ser criados no prefixo do caminho /parallelcluster/. Se isso não for possível, a política do usuário precisará ser atualizada para conceder permissão iam:PassRole sobre as funções personalizadas específicas, como no exemplo a seguir.

{ "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" }
Atenção

Atualmente, esse modo não permite o gerenciamento de clusters do AWS Batch, pois nem todos os perfis do IAM podem ser passados na configuração do cluster.

Modo PermissionsBoundary

Esse modo delega ao AWS ParallelCluster a criação de perfis do IAM que estão vinculados ao limite de permissões configurado do IAM. Para obter mais informações sobre limites de permissões do IAM, consulte Limites de permissões para entidades do IAM no Guia do usuário do IAM.

A política a seguir precisa ser adicionada à função do usuário.

Na política, substitua <permissions-boundary-arn> pelo ARN da política do IAM a ser aplicado como limite de permissões.

Atenção

Se você configurar os parâmetros HeadNode / Iam / AdditionalPolicies ou Scheduling / SlurmQueues / Iam / AdditionalPolicies, deverá conceder ao usuário permissão para anexar e desanexar políticas de função para cada política adicional, conforme mostrado na política a seguir. Adicione os ARNs de política adicionais à condição para anexar e desanexar políticas de função.

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

Quando esse modo está ativado, você deve especificar o limite de permissões ARN no parâmetro de configuração Iam / PermissionsBoundary ao criar ou atualizar um cluster e no parâmetro Build / Iam / PermissionBoundary ao criar uma imagem personalizada.

Parâmetros de configuração do AWS ParallelCluster para gerenciar permissões do IAM

AWS ParallelCluster expõe uma série de opções de configuração para personalizar e gerenciar as permissões e funções do IAM que são usadas em um cluster ou durante o processo de criação da AMI personalizada.

Configuração do cluster

Perfil do IAM para o nó principal

HeadNode / Iam / InstanceRole | InstanceProfile

Com essa opção, você substitui o perfil padrão do IAM atribuído ao nó principal do cluster. Para obter detalhes adicionais, consulte a referência InstanceProfile.

Aqui está o conjunto mínimo de políticas a serem usadas como parte dessa função quando o programador é o Slurm:

  • Política do IAM gerenciada pela arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy. Para obter mais informações, consulte Criar usuários e perfis do IAM para uso com o atendente do CloudWatch no Guia do usuário do Amazon CloudWatch.

  • Política do IAM gerenciada pela arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore. Para obter mais informações, consulte Políticas gerenciadas pela AWS para AWS Systems Manager no Guia do usuário do AWS Systems Manager.

  • Política do IAM adicional:

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

Observe que, caso Scheduling / SlurmQueues / Iam / InstanceRole seja usado para substituir o perfil de computação do IAM, a política do nó principal relatada acima precisa incluir esse perfil na seção Resource da permissão iam:PassRole.

Aqui está o conjunto mínimo de políticas a serem usadas como parte dessa função quando o programador é o AWS Batch:

  • Política do IAM gerenciada pela arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy. Para obter mais informações, consulte Criar usuários e perfis do IAM para uso com o atendente do CloudWatch no Guia do usuário do Amazon CloudWatch.

  • Política do IAM gerenciada pela arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore. Para obter mais informações, consulte Políticas gerenciadas pela AWS para AWS Systems Manager no Guia do usuário do AWS Systems Manager.

  • Política do IAM adicional:

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

Acesso do Amazon S3

HeadNode / Iam / S3Access ou Scheduling / SlurmQueues / S3Access

Nessas seções de configuração, você pode personalizar o acesso ao Amazon S3 concedendo políticas adicionais do Amazon S3 aos perfis do IAM associados ao nó principal ou aos nós de computação do cluster quando esses perfis são criados pelo AWS ParallelCluster. Para obter mais informações, consulte a documentação de referência para cada parâmetro de configuração.

Esse parâmetro só pode ser usado quando o usuário está configurado com Modo de acesso privilegiado do IAM ou Modo PermissionsBoundary.

Política do IAM adicionais

HeadNode / Iam / AdditionalIamPolicies ou SlurmQueues / Iam / AdditionalIamPolicies

Use essa opção para anexar políticas adicionais gerenciadas do IAM às perfis do IAM associados ao nó principal ou aos nós de computação do cluster quando esses perfis são criados pelo AWS ParallelCluster.

Atenção

Para usar essa opção, certifique-se de que o usuário do AWS ParallelCluster tenha as permissões iam:AttachRolePolicy e iam:DetachRolePolicy para as políticas do IAM que precisam ser anexadas.

Perfil das funções do AWS Lambda

Iam / Roles / LambdaFunctionsRole

Essa opção substitui o perfil associado a todas as funções AWS Lambda usadas durante o processo de criação do cluster. AWS Lambda precisa ser configurado como entidade principal autorizada a assumir o perfil.

nota

Se DeploymentSettings / LambdaFunctionsVpcConfig estiver definido, LambdaFunctionsRole deverá incluir a permissão de perfil do AWS Lambda para definir a configuração da VPC.

Aqui está o conjunto mínimo de políticas a serem usadas como parte desse perfil:

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

Perfil do IAM para nós de computação

Scheduling / SlurmQueues / Iam / InstanceRole | InstanceProfile

Essa opção permite substituir o perfil do IAM que é atribuído aos nós de computação do cluster. Para ter mais informações, consulte InstanceProfile.

Aqui está o conjunto mínimo de políticas a serem usadas como parte desse perfil:

  • Política do IAM gerenciada pela arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy. Para obter mais informações, consulte Criar usuários e perfis do IAM para uso com o atendente do CloudWatch no Guia do usuário do Amazon CloudWatch.

  • Política do IAM gerenciada pela arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore. Para obter mais informações, consulte Políticas gerenciadas pela AWS para AWS Systems Manager no Guia do usuário do AWS Systems Manager.

  • Política do IAM adicional:

    { "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 de permissões

Iam / PermissionsBoundary

Esse parâmetro força o AWS ParallelCluster a anexar a política do IAM especificada como PermissionsBoundary a todos os perfis do IAM criados como parte de uma implantação de cluster.

Consulte Modo PermissionsBoundary para obter a lista de políticas exigidas pelo usuário quando essa configuração é definida.

Configuração de imagem personalizada

Perfil de instância para o EC2 Image Builder

Build / Iam / InstanceRole | InstanceProfile

Com esta opção, você substitui o perfil do IAM atribuído à instância do Amazon EC2 inicializada pelo EC2 Image Builder para criar uma AMI personalizada.

Aqui está o conjunto mínimo de políticas a serem usadas como parte desse perfil:

  • Política do IAM gerenciada pela arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore. Para obter mais informações, consulte Políticas gerenciadas pela AWS para AWS Systems Manager no Guia do usuário do AWS Systems Manager.

  • Política do IAM gerenciada pela arn:aws:iam::aws:policy/EC2InstanceProfileForImageBuilder. Para obter mais informações, consulte Política do EC2InstanceProfileForImageBuilder no Guia do usuário do Image Builder.

  • Política do IAM adicional:

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

Função de limpeza AWS Lambda

Build / Iam / CleanupLambdaRole

Essa opção substitui o perfil associado a todas as funções AWS Lambda usadas durante o processo de criação de imagem personalizada. AWS Lambda precisa ser configurado como entidade principal autorizada a assumir o perfil.

nota

Se DeploymentSettings / LambdaFunctionsVpcConfig estiver definido, CleanupLambdaRole deverá incluir a permissão de perfil do AWS Lambda para definir a configuração da VPC.

Aqui está o conjunto mínimo de políticas a serem usadas como parte desse perfil:

  • Política do IAM gerenciada pela arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole. Para obter mais informações, consulte Políticas gerenciadas pela AWS para recursos do Lambda no Guia do desenvolvedor do AWS Lambda.

  • Política do IAM adicional:

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

Política do IAM adicionais

Build / Iam / AdditionalIamPolicies

Use essa opção para anexar políticas gerenciadas do IAM adicionais ao perfil associado à instância do Amazon EC2 usada pelo EC2 Image Builder para produzir a AMI personalizada.

Atenção

Para usar essa opção, certifique-se de que o usuário do AWS ParallelCluster tenha as permissões iam:AttachRolePolicy e iam:DetachRolePolicy para as políticas do IAM que precisam ser anexadas.

Limite de permissões

Build / Iam / PermissionsBoundary

Esse parâmetro força o AWS ParallelCluster a anexar a política do IAM especificada como PermissionsBoundary a todos os perfis do IAM criados como parte da criação de AMI personalizada.

Consulte em Modo PermissionsBoundary a lista de políticas necessárias para usar essa funcionalidade.