3.5. Limites d’autorisation pour le rôle d’installateur


Il est possible d’appliquer une stratégie en tant que limite d’autorisations sur un rôle d’installateur. Il est possible d’utiliser une politique gérée par AWS ou une politique gérée par le client pour définir la limite d’une entité de gestion de l’identité et des accès (IAM) d’Amazon Web Services (AWS) (utilisateur ou rôle). La combinaison de la stratégie et de la stratégie limite limite les autorisations maximales pour l’utilisateur ou le rôle. La ROSA comprend un ensemble de trois fichiers de stratégie de limites d’autorisation préparés, avec lesquels vous pouvez restreindre les autorisations pour le rôle d’installateur puisque la modification de la stratégie d’installation elle-même n’est pas prise en charge.

Note

Cette fonctionnalité n’est prise en charge que sur Red Hat OpenShift Service sur les clusters AWS (architecture classique).

Les fichiers de stratégie de limites d’autorisation sont les suivants:

  • Le fichier de stratégie de limites de base contient les autorisations minimales nécessaires à l’installateur ROSA (architecture classique) pour installer un Red Hat OpenShift Service sur le cluster AWS. L’installateur n’a pas d’autorisation pour créer un cloud privé virtuel (VPC) ou PrivateLink (PL). Il faut fournir un VPC.
  • Le fichier de stratégie de limite VPC contient les autorisations minimales nécessaires à l’installateur ROSA (architecture classique) pour créer/gérer le VPC. Il n’inclut pas les autorisations pour l’installation PL ou core. Lorsque vous avez besoin d’installer un cluster avec suffisamment d’autorisations pour l’installateur pour installer le cluster et créer / gérer le VPC, mais vous n’avez pas besoin de configurer PL, alors utilisez les fichiers limites core et VPC avec le rôle d’installateur.
  • Le fichier de stratégie de limite PrivateLink (PL) contient les autorisations minimales requises pour l’installateur ROSA (architecture classique) pour créer l’AWS PL avec un cluster. Il n’inclut pas les autorisations pour VPC ou l’installation de base. Fournir un VPC pré-créé pour tous les clusters PL pendant l’installation.

Lors de l’utilisation des fichiers de stratégie de limites d’autorisation, les combinaisons suivantes s’appliquent:

  • Aucune politique de limite d’autorisation ne signifie que les autorisations complètes de stratégie d’installation s’appliquent à votre cluster.
  • Core définit uniquement les autorisations les plus restreintes pour le rôle d’installateur. Les autorisations VPC et PL ne sont pas incluses dans la stratégie de limites de base seulement.

    • L’installateur ne peut pas créer ou gérer le VPC ou PL.
    • Il faut avoir un VPC fourni par le client, et PrivateLink (PL) n’est pas disponible.
  • Core + VPC définit les autorisations core et VPC pour le rôle d’installateur.

    • L’installateur ne peut pas créer ou gérer le PL.
    • Suppose que vous n’utilisez pas custom/BYO-VPC.
    • Suppose que l’installateur créera et gérera le VPC.
  • Core + PrivateLink (PL) signifie que l’installateur peut fournir l’infrastructure PL.

    • Il faut avoir un VPC fourni par le client.
    • Ceci est pour un cluster privé avec PL.

Cette procédure d’exemple est applicable pour un rôle et une politique d’installation avec la plus grande restriction des autorisations, en utilisant uniquement la stratégie de limite d’autorisation de l’installateur de base pour ROSA. Il est possible de compléter cela avec la console AWS ou le CLI AWS. Cet exemple utilise l’AWS CLI et la politique suivante:

Exemple 3.1. accueil > Sts_installer_core_permission_border_policy.json

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
		    "autoscaling:DescribeAutoScalingGroups",
		    "ec2:AllocateAddress",
		    "ec2:AssociateAddress",
		    "ec2:AttachNetworkInterface",
		    "ec2:AuthorizeSecurityGroupEgress",
		    "ec2:AuthorizeSecurityGroupIngress",
		    "ec2:CopyImage",
		    "ec2:CreateNetworkInterface",
		    "ec2:CreateSecurityGroup",
		    "ec2:CreateTags",
		    "ec2:CreateVolume",
		    "ec2:DeleteNetworkInterface",
		    "ec2:DeleteSecurityGroup",
		    "ec2:DeleteSnapshot",
		    "ec2:DeleteTags",
		    "ec2:DeleteVolume",
		    "ec2:DeregisterImage",
		    "ec2:DescribeAccountAttributes",
		    "ec2:DescribeAddresses",
		    "ec2:DescribeAvailabilityZones",
		    "ec2:DescribeDhcpOptions",
		    "ec2:DescribeImages",
		    "ec2:DescribeInstanceAttribute",
		    "ec2:DescribeInstanceCreditSpecifications",
		    "ec2:DescribeInstances",
		    "ec2:DescribeInstanceStatus",
		    "ec2:DescribeInstanceTypeOfferings",
		    "ec2:DescribeInstanceTypes",
		    "ec2:DescribeInternetGateways",
		    "ec2:DescribeKeyPairs",
		    "ec2:DescribeNatGateways",
		    "ec2:DescribeNetworkAcls",
		    "ec2:DescribeNetworkInterfaces",
		    "ec2:DescribePrefixLists",
		    "ec2:DescribeRegions",
		    "ec2:DescribeReservedInstancesOfferings",
		    "ec2:DescribeRouteTables",
		    "ec2:DescribeSecurityGroups",
		    "ec2:DescribeSecurityGroupRules",
		    "ec2:DescribeSubnets",
		    "ec2:DescribeTags",
		    "ec2:DescribeVolumes",
		    "ec2:DescribeVpcAttribute",
		    "ec2:DescribeVpcClassicLink",
		    "ec2:DescribeVpcClassicLinkDnsSupport",
		    "ec2:DescribeVpcEndpoints",
		    "ec2:DescribeVpcs",
		    "ec2:GetConsoleOutput",
		    "ec2:GetEbsDefaultKmsKeyId",
		    "ec2:ModifyInstanceAttribute",
		    "ec2:ModifyNetworkInterfaceAttribute",
		    "ec2:ReleaseAddress",
		    "ec2:RevokeSecurityGroupEgress",
		    "ec2:RevokeSecurityGroupIngress",
		    "ec2:RunInstances",
		    "ec2:StartInstances",
		    "ec2:StopInstances",
		    "ec2:TerminateInstances",
		    "elasticloadbalancing:AddTags",
		    "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer",
		    "elasticloadbalancing:AttachLoadBalancerToSubnets",
		    "elasticloadbalancing:ConfigureHealthCheck",
		    "elasticloadbalancing:CreateListener",
		    "elasticloadbalancing:CreateLoadBalancer",
		    "elasticloadbalancing:CreateLoadBalancerListeners",
		    "elasticloadbalancing:CreateTargetGroup",
		    "elasticloadbalancing:DeleteLoadBalancer",
		    "elasticloadbalancing:DeleteTargetGroup",
		    "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
		    "elasticloadbalancing:DeregisterTargets",
		    "elasticloadbalancing:DescribeInstanceHealth",
		    "elasticloadbalancing:DescribeListeners",
		    "elasticloadbalancing:DescribeLoadBalancerAttributes",
		    "elasticloadbalancing:DescribeLoadBalancers",
		    "elasticloadbalancing:DescribeTags",
		    "elasticloadbalancing:DescribeTargetGroupAttributes",
		    "elasticloadbalancing:DescribeTargetGroups",
		    "elasticloadbalancing:DescribeTargetHealth",
		    "elasticloadbalancing:ModifyLoadBalancerAttributes",
		    "elasticloadbalancing:ModifyTargetGroup",
		    "elasticloadbalancing:ModifyTargetGroupAttributes",
		    "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
		    "elasticloadbalancing:RegisterTargets",
		    "elasticloadbalancing:SetLoadBalancerPoliciesOfListener",
		    "elasticloadbalancing:SetSecurityGroups",
		    "iam:AddRoleToInstanceProfile",
		    "iam:CreateInstanceProfile",
		    "iam:DeleteInstanceProfile",
		    "iam:GetInstanceProfile",
		    "iam:TagInstanceProfile",
		    "iam:GetRole",
		    "iam:GetRolePolicy",
		    "iam:GetUser",
		    "iam:ListAttachedRolePolicies",
		    "iam:ListInstanceProfiles",
		    "iam:ListInstanceProfilesForRole",
		    "iam:ListRolePolicies",
		    "iam:ListRoles",
		    "iam:ListUserPolicies",
		    "iam:ListUsers",
		    "iam:PassRole",
		    "iam:RemoveRoleFromInstanceProfile",
		    "iam:SimulatePrincipalPolicy",
		    "iam:TagRole",
		    "iam:UntagRole",
		    "route53:ChangeResourceRecordSets",
		    "route53:ChangeTagsForResource",
		    "route53:CreateHostedZone",
		    "route53:DeleteHostedZone",
		    "route53:GetAccountLimit",
		    "route53:GetChange",
		    "route53:GetHostedZone",
		    "route53:ListHostedZones",
		    "route53:ListHostedZonesByName",
		    "route53:ListResourceRecordSets",
		    "route53:ListTagsForResource",
		    "route53:UpdateHostedZoneComment",
		    "s3:CreateBucket",
		    "s3:DeleteBucket",
		    "s3:DeleteObject",
		    "s3:GetAccelerateConfiguration",
		    "s3:GetBucketAcl",
		    "s3:GetBucketCORS",
		    "s3:GetBucketLocation",
		    "s3:GetBucketLogging",
		    "s3:GetBucketObjectLockConfiguration",
		    "s3:GetBucketPolicy",
		    "s3:GetBucketRequestPayment",
		    "s3:GetBucketTagging",
		    "s3:GetBucketVersioning",
		    "s3:GetBucketWebsite",
		    "s3:GetEncryptionConfiguration",
		    "s3:GetLifecycleConfiguration",
		    "s3:GetObject",
		    "s3:GetObjectAcl",
		    "s3:GetObjectTagging",
		    "s3:GetObjectVersion",
		    "s3:GetReplicationConfiguration",
		    "s3:ListBucket",
		    "s3:ListBucketVersions",
		    "s3:PutBucketAcl",
		    "s3:PutBucketPolicy",
		    "s3:PutBucketTagging",
		    "s3:PutEncryptionConfiguration",
		    "s3:PutObject",
		    "s3:PutObjectAcl",
		    "s3:PutObjectTagging",
		    "servicequotas:GetServiceQuota",
		    "servicequotas:ListAWSDefaultServiceQuotas",
		    "sts:AssumeRole",
		    "sts:AssumeRoleWithWebIdentity",
		    "sts:GetCallerIdentity",
		    "tag:GetResources",
		    "tag:UntagResources",
		    "kms:DescribeKey",
		    "cloudwatch:GetMetricData",
		    "ec2:CreateRoute",
		    "ec2:DeleteRoute",
		    "ec2:CreateVpcEndpoint",
		    "ec2:DeleteVpcEndpoints",
		    "ec2:CreateVpcEndpointServiceConfiguration",
		    "ec2:DeleteVpcEndpointServiceConfigurations",
		    "ec2:DescribeVpcEndpointServiceConfigurations",
		    "ec2:DescribeVpcEndpointServicePermissions",
		    "ec2:DescribeVpcEndpointServices",
		    "ec2:ModifyVpcEndpointServicePermissions"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/red-hat-managed": "true"
                }
            }
        }
    ]
}
Copy to Clipboard Toggle word wrap
Important

Afin d’utiliser les limites d’autorisation, vous devrez préparer la politique de limite d’autorisation et l’ajouter à votre rôle d’installateur pertinent dans AWS IAM. Bien que le ROSA (rosa) CLI offre une fonction de limite d’autorisation, il s’applique à tous les rôles et pas seulement au rôle d’installateur, ce qui signifie qu’il ne fonctionne pas avec les politiques de limite d’autorisation fournies (qui ne sont que pour le rôle d’installateur).

Conditions préalables

  • Il y a un compte AWS.
  • Les autorisations requises pour administrer les rôles et les politiques AWS sont requises.
  • Dans votre poste de travail, vous avez installé et configuré les derniers CLI AWS (aws) et ROSA (rosa).
  • Les rôles de votre compte ROSA ont déjà été préparés, y compris le rôle d’installateur et les politiques correspondantes. Dans le cas où ceux-ci n’existent pas dans votre compte AWS, consultez « Créer les rôles et les politiques STS à l’échelle du compte » dans les ressources supplémentaires.

Procédure

  1. Créez le fichier de la politique en saisissant la commande suivante dans la rosa CLI:

    $ curl -o ./rosa-installer-core.json https://raw.githubusercontent.com/openshift/managed-cluster-config/master/resources/sts/4.18/sts_installer_core_permission_boundary_policy.json
    Copy to Clipboard Toggle word wrap
  2. Créez la stratégie dans AWS et rassemblez son nom de ressource Amazon (ARN) en entrant la commande suivante:

    $ aws iam create-policy \
    --policy-name rosa-core-permissions-boundary-policy \
    --policy-document file://./rosa-installer-core.json \
    --description "ROSA installer core permission boundary policy, the minimum permission set, allows BYO-VPC, disallows PrivateLink"
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    {
        "Policy": {
            "PolicyName": "rosa-core-permissions-boundary-policy",
            "PolicyId": "<Policy ID>",
            "Arn": "arn:aws:iam::<account ID>:policy/rosa-core-permissions-boundary-policy",
            "Path": "/",
            "DefaultVersionId": "v1",
            "AttachmentCount": 0,
            "PermissionsBoundaryUsageCount": 0,
            "IsAttachable": true,
            "CreateDate": "<CreateDate>",
            "UpdateDate": "<UpdateDate>"
        }
    }
    Copy to Clipboard Toggle word wrap

  3. Ajoutez la stratégie de limite d’autorisation au rôle d’installateur que vous souhaitez restreindre en entrant la commande suivante:

    $ aws iam put-role-permissions-boundary \
    --role-name ManagedOpenShift-Installer-Role \
    --permissions-boundary arn:aws:iam::<account ID>:policy/rosa-core-permissions-boundary-policy
    Copy to Clipboard Toggle word wrap
  4. Afficher le rôle d’installateur pour valider les stratégies jointes (y compris les limites des autorisations) en entrant la commande suivante dans la rosa CLI:

    $ aws iam get-role --role-name ManagedOpenShift-Installer-Role \
    --output text | grep PERMISSIONSBOUNDARY
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    PERMISSIONSBOUNDARY	arn:aws:iam::<account ID>:policy/rosa-core-permissions-boundary-policy	Policy
    Copy to Clipboard Toggle word wrap

    D’autres exemples de politiques de limites d’autorisation PL et VPC voir:

    Exemple 3.2. sts_installer_ privatelink_permission_border_policy.json

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ec2:ModifyVpcEndpointServiceConfiguration",
            "route53:ListHostedZonesByVPC",
            "route53:CreateVPCAssociationAuthorization",
            "route53:AssociateVPCWithHostedZone",
            "route53:DeleteVPCAssociationAuthorization",
            "route53:DisassociateVPCFromHostedZone",
            "route53:ChangeResourceRecordSets"
          ],
          "Resource": "*"
        }
      ]
    }
    Copy to Clipboard Toggle word wrap

    Exemple 3.3. accueil &gt; Sts_installer_vpc_permission_border_policy.json

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
    		    "ec2:AssociateDhcpOptions",
    		    "ec2:AssociateRouteTable",
    		    "ec2:AttachInternetGateway",
    		    "ec2:CreateDhcpOptions",
    		    "ec2:CreateInternetGateway",
    		    "ec2:CreateNatGateway",
    		    "ec2:CreateRouteTable",
    		    "ec2:CreateSubnet",
    		    "ec2:CreateVpc",
    		    "ec2:DeleteDhcpOptions",
    		    "ec2:DeleteInternetGateway",
    		    "ec2:DeleteNatGateway",
    		    "ec2:DeleteRouteTable",
    		    "ec2:DeleteSubnet",
    		    "ec2:DeleteVpc",
    		    "ec2:DetachInternetGateway",
    		    "ec2:DisassociateRouteTable",
    		    "ec2:ModifySubnetAttribute",
    		    "ec2:ModifyVpcAttribute",
    		    "ec2:ReplaceRouteTableAssociation"
                ],
                "Resource": "*"
            }
        ]
    }
    Copy to Clipboard Toggle word wrap
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat