View a markdown version of this page

Identity-based esempi di policy per AWS Telco Network Builder - AWS Costruttore di reti di telecomunicazioni

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Identity-based esempi di policy per AWS Telco Network Builder

Per impostazione predefinita, utenti e ruoli non sono autorizzati a creare o modificare risorse AWS TNB. Per concedere agli utenti l’autorizzazione a eseguire azioni sulle risorse di cui hanno bisogno, un amministratore IAM può creare policy IAM.

Per informazioni su come creare una policy basata su identità IAM utilizzando questi documenti di policy JSON di esempio, consulta Creazione di policy IAM (console) nella Guida per l’utente di IAM.

Per dettagli sulle azioni e sui tipi di risorse definiti da AWS TNB, incluso il formato degli ARN per ciascuno dei tipi di risorse, vedi Azioni, risorse e chiavi di condizione per AWS Telco Network Builder nel Service Authorization Reference.

Best practice per le policy

Identity-based le politiche determinano se qualcuno può creare, accedere o eliminare le risorse AWS TNB nel tuo account. Queste operazioni possono comportare costi aggiuntivi per l’ Account AWS. Quando si creano o modificano policy basate sull’identità, seguire queste linee guida e raccomandazioni:

  • Inizia con le policy AWS gestite e passa alle autorizzazioni con privilegi minimi: per iniziare a concedere autorizzazioni agli utenti e ai carichi di lavoro, utilizza le policy AWS gestite che concedono le autorizzazioni per molti casi d'uso comuni. Sono disponibili nel tuo. Account AWS Ti consigliamo di ridurre ulteriormente le autorizzazioni definendo politiche gestite dal AWS cliente specifiche per i tuoi casi d'uso. Per maggiori informazioni, consulta Policy gestite da AWS o Policy gestite da AWS per le funzioni dei processi nella Guida per l’utente di IAM.

  • Applicazione delle autorizzazioni con privilegio minimo - Quando si impostano le autorizzazioni con le policy IAM, concedere solo le autorizzazioni richieste per eseguire un’attività. È possibile farlo definendo le azioni che possono essere intraprese su risorse specifiche in condizioni specifiche, note anche come autorizzazioni con privilegio minimo. Per maggiori informazioni sull’utilizzo di IAM per applicare le autorizzazioni, consulta Policy e autorizzazioni in IAM nella Guida per l’utente di IAM.

  • Condizioni d’uso nelle policy IAM per limitare ulteriormente l’accesso - Per limitare l’accesso ad azioni e risorse è possibile aggiungere una condizione alle policy. Ad esempio, è possibile scrivere una condizione di policy per specificare che tutte le richieste devono essere inviate utilizzando SSL. Puoi anche utilizzare le condizioni per concedere l'accesso alle azioni di servizio se vengono utilizzate tramite uno specifico Servizio AWS, ad esempio CloudFormation. Per maggiori informazioni, consultare la sezione Elementi delle policy JSON di IAM: condizione nella Guida per l’utente di IAM.

  • Utilizzo dello strumento di analisi degli accessi IAM per convalidare le policy IAM e garantire autorizzazioni sicure e funzionali - Lo strumento di analisi degli accessi IAM convalida le policy nuove ed esistenti in modo che aderiscano al linguaggio (JSON) della policy IAM e alle best practice di IAM. Lo strumento di analisi degli accessi IAM offre oltre 100 controlli delle policy e consigli utili per creare policy sicure e funzionali. Per maggiori informazioni, consultare Convalida delle policy per il Sistema di analisi degli accessi IAM nella Guida per l’utente di IAM.

  • Richiedi l'autenticazione a più fattori (MFA): se hai uno scenario che richiede utenti IAM o un utente root Account AWS, attiva l'MFA per una maggiore sicurezza. Per richiedere la MFA quando vengono chiamate le operazioni API, aggiungere le condizioni MFA alle policy. Per maggiori informazioni, consultare Protezione dell’accesso API con MFA nella Guida per l’utente di IAM.

Per maggiori informazioni sulle best practice in IAM, consulta Best practice di sicurezza in IAM nella Guida per l’utente di IAM.

Utilizzo di AWS Console TNB

Per accedere alla console AWS Telco Network Builder, è necessario disporre di un set minimo di autorizzazioni. Queste autorizzazioni devono consentirti di elencare e visualizzare i dettagli sulle risorse AWS TNB presenti nel tuo. Account AWS Se crei una policy basata sull’identità più restrittiva rispetto alle autorizzazioni minime richieste, la console non funzionerà nel modo previsto per le entità (utenti o ruoli) associate a tale policy.

Non è necessario consentire le autorizzazioni minime della console per gli utenti che effettuano chiamate solo all'API AWS CLI o all'API. AWS Al contrario, è opportuno concedere l’accesso solo alle azioni che corrispondono all’operazione API che stanno cercando di eseguire.

Esempi di politiche relative ai ruoli del servizio

In qualità di amministratore, possiedi e gestisci le risorse create da AWS TNB in base a quanto definito dall'ambiente e dai modelli di servizio. È necessario collegare i ruoli del servizio IAM al proprio account per consentire a AWS TNB di creare risorse per la gestione del ciclo di vita della rete.

Un ruolo di servizio IAM consente a AWS TNB di effettuare chiamate alle risorse per tuo conto per creare istanze e gestire le tue reti. Se specifichi un ruolo di servizio, AWS TNB utilizza le credenziali di quel ruolo.

Puoi creare il ruolo del servizio e le sue policy di autorizzazione con il servizio IAM. Per ulteriori informazioni sulla creazione di un ruolo di servizio, consulta Creazione di un ruolo per delegare le autorizzazioni a un AWS servizio nella IAM User Guide.

Come membro del team della piattaforma, puoi come amministratore creare un ruolo di servizio AWS TNB e fornirlo a AWS TNB. Questo ruolo consente a AWS TNB di effettuare chiamate ad altri servizi come Amazon Elastic Kubernetes Service e di fornire l'infrastruttura necessaria per la rete e CloudFormation fornire le funzioni di rete come definito nel tuo NSD.

Ti consigliamo di utilizzare il ruolo IAM e la politica di fiducia seguenti per il tuo ruolo di servizio TNB. AWS Quando definisci l'ambito delle autorizzazioni relative a questa policy, tieni presente che AWS TNB potrebbe fallire con errori di accesso negato relativi alle risorse non incluse nella tua policy.

Il codice seguente mostra una politica relativa al ruolo del servizio AWS TNB:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "sts:GetCallerIdentity" ], "Resource": "*", "Effect": "Allow", "Sid": "AssumeRole" }, { "Action": [ "tnb:*" ], "Resource": "*", "Effect": "Allow", "Sid": "TNBPolicy" }, { "Action": [ "iam:AddRoleToInstanceProfile", "iam:CreateInstanceProfile", "iam:DeleteInstanceProfile", "iam:GetInstanceProfile", "iam:RemoveRoleFromInstanceProfile", "iam:TagInstanceProfile", "iam:UntagInstanceProfile" ], "Resource": "*", "Effect": "Allow", "Sid": "IAMPolicy" }, { "Condition": { "StringEquals": { "iam:AWSServiceName": [ "eks.amazonaws.com", "eks-nodegroup.amazonaws.com" ] } }, "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "*", "Effect": "Allow", "Sid": "TNBAccessSLRPermissions" }, { "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags", "autoscaling:DeleteAutoScalingGroup", "autoscaling:DeleteTags", "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeScalingActivities", "autoscaling:DescribeTags", "autoscaling:UpdateAutoScalingGroup", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateLaunchTemplate", "ec2:CreateLaunchTemplateVersion", "ec2:CreateSecurityGroup", "ec2:DeleteLaunchTemplateVersions", "ec2:DescribeLaunchTemplates", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplate", "ec2:DeleteSecurityGroup", "ec2:DescribeSecurityGroups", "ec2:DescribeTags", "ec2:GetLaunchTemplateData", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RunInstances", "ec2:AssociateRouteTable", "ec2:AttachInternetGateway", "ec2:CreateInternetGateway", "ec2:CreateNetworkInterface", "ec2:CreateRoute", "ec2:CreateRouteTable", "ec2:CreateSubnet", "ec2:CreateTags", "ec2:CreateVpc", "ec2:DeleteInternetGateway", "ec2:DeleteNetworkInterface", "ec2:DeleteRoute", "ec2:DeleteRouteTable", "ec2:DeleteSubnet", "ec2:DeleteTags", "ec2:DeleteVpc", "ec2:DetachNetworkInterface", "ec2:DescribeInstances", "ec2:DescribeInternetGateways", "ec2:DescribeKeyPairs", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroupRules", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DetachInternetGateway", "ec2:DisassociateRouteTable", "ec2:ModifySecurityGroupRules", "ec2:ModifySubnetAttribute", "ec2:ModifyVpcAttribute", "ec2:AllocateAddress", "ec2:AssignIpv6Addresses", "ec2:AssociateAddress", "ec2:AssociateNatGatewayAddress", "ec2:AssociateVpcCidrBlock", "ec2:CreateEgressOnlyInternetGateway", "ec2:CreateNatGateway", "ec2:DeleteEgressOnlyInternetGateway", "ec2:DeleteNatGateway", "ec2:DescribeAddresses", "ec2:DescribeEgressOnlyInternetGateways", "ec2:DescribeNatGateways", "ec2:DisassociateAddress", "ec2:DisassociateNatGatewayAddress", "ec2:DisassociateVpcCidrBlock", "ec2:ReleaseAddress", "ec2:UnassignIpv6Addresses", "ec2:DescribeImages", "eks:CreateCluster", "eks:ListClusters", "eks:RegisterCluster", "eks:TagResource", "eks:DescribeAddonVersions", "events:DescribeRule", "iam:GetRole", "iam:ListAttachedRolePolicies" ], "Resource": "*", "Effect": "Allow", "Sid": "TNBAccessComputePerms" }, { "Resource": "*", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Condition": { "StringEquals": { "iam:PassedToService": [ "ec2.amazonaws.com", "eks.amazonaws.com", "eks-nodegroup.amazonaws.com", "events.amazonaws.com", "autoscaling.amazonaws.com", "codebuild.amazonaws.com" ] } } }, { "Action": [ "codebuild:BatchDeleteBuilds", "codebuild:BatchGetBuilds", "codebuild:CreateProject", "codebuild:DeleteProject", "codebuild:ListBuildsForProject", "codebuild:StartBuild", "codebuild:StopBuild", "events:DeleteRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "s3:CreateBucket", "s3:GetBucketAcl", "s3:GetObject", "eks:DescribeNodegroup", "eks:DeleteNodegroup", "eks:AssociateIdentityProviderConfig", "eks:CreateNodegroup", "eks:DeleteCluster", "eks:DeregisterCluster", "eks:UpdateAddon", "eks:UpdateClusterVersion", "eks:UpdateNodegroupConfig", "eks:UpdateNodegroupVersion", "eks:DescribeUpdate", "eks:UntagResource", "eks:DescribeCluster", "eks:ListNodegroups", "eks:CreateAddon", "eks:DeleteAddon", "eks:DescribeAddon", "eks:DescribeAddonVersions", "s3:PutObject", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStackResources", "cloudformation:DescribeStacks", "cloudformation:ListStackResources", "cloudformation:UpdateStack", "cloudformation:UpdateTerminationProtection", "ssm:PutParameter", "ssm:GetParameters", "ssm:GetParameter", "ssm:DeleteParameter", "ssm:AddTagsToResource", "ssm:ListTagsForResource", "ssm:RemoveTagsFromResource" ], "Resource": [ "arn:aws:events:*:*:rule/tnb*", "arn:aws:codebuild:*:*:project/tnb*", "arn:aws:logs:*:*:log-group:/aws/tnb*", "arn:aws:s3:::tnb*", "arn:aws:eks:*:*:addon/tnb*/*/*", "arn:aws:eks:*:*:cluster/tnb*", "arn:aws:eks:*:*:nodegroup/tnb*/tnb*/*", "arn:aws:cloudformation:*:*:stack/tnb*", "arn:aws:ssm:*:*:parameter/tnb/*" ], "Effect": "Allow", "Sid": "TNBAccessInfraResourcePerms" }, { "Sid": "CFNTemplatePerms", "Effect": "Allow", "Action": [ "cloudformation:GetTemplateSummary" ], "Resource": "*" }, { "Sid": "ImageAMISSMPerms", "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:*::parameter/aws/service/eks/optimized-ami/*", "arn:aws:ssm:*::parameter/aws/service/bottlerocket/*" ] }, { "Action": [ "tag:GetResources" ], "Resource": "*", "Effect": "Allow", "Sid": "TaggingPolicy" }, { "Action": [ "outposts:GetOutpost" ], "Resource": "*", "Effect": "Allow", "Sid": "OutpostPolicy" } ] }

Il codice seguente mostra la politica di fiducia del servizio AWS TNB:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "tnb.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Quando crei una risorsa Amazon EKS nel tuo NSD, fornisci l'cluster_roleattributo per specificare quale ruolo verrà utilizzato per creare il tuo cluster Amazon EKS.

L'esempio seguente mostra un AWS CloudFormation modello che crea un ruolo di servizio AWS TNB per la policy del cluster Amazon EKS.

AWSTemplateFormatVersion: "2010-09-09" Resources: TNBEKSClusterRole: Type: "AWS::IAM::Role" Properties: RoleName: "TNBEKSClusterRole" AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: - eks.amazonaws.com Action: - "sts:AssumeRole" Path: / ManagedPolicyArns: - !Sub "arn:${AWS::Partition}:iam::aws:policy/AmazonEKSClusterPolicy"

Per ulteriori informazioni sui ruoli IAM che utilizzano il AWS CloudFormation modello, consulta le seguenti sezioni nella Guida per l'AWS CloudFormation utente:

Quando crei risorse di un gruppo di nodi Amazon EKS nel tuo NSD, fornisci l'node_roleattributo per specificare quale ruolo verrà utilizzato per creare il tuo gruppo di nodi Amazon EKS.

L'esempio seguente mostra un CloudFormation modello che crea un ruolo di servizio AWS TNB per la policy dei gruppi di nodi Amazon EKS.

AWSTemplateFormatVersion: "2010-09-09" Resources: TNBEKSNodeRole: Type: "AWS::IAM::Role" Properties: RoleName: "TNBEKSNodeRole" AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - "sts:AssumeRole" Path: / ManagedPolicyArns: - !Sub "arn:${AWS::Partition}:iam::aws:policy/AmazonEKSWorkerNodePolicy" - !Sub "arn:${AWS::Partition}:iam::aws:policy/AmazonEKS_CNI_Policy" - !Sub "arn:${AWS::Partition}:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly" - !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy" Policies: - PolicyName: EKSNodeRoleInlinePolicy PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - "logs:DescribeLogStreams" - "logs:PutLogEvents" - "logs:CreateLogGroup" - "logs:CreateLogStream" Resource: "arn:aws:logs:*:*:log-group:/aws/tnb/tnb*" - PolicyName: EKSNodeRoleIpv6CNIPolicy PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - "ec2:AssignIpv6Addresses" Resource: "arn:aws:ec2:*:*:network-interface/*"

Per ulteriori informazioni sui ruoli IAM che utilizzano il AWS CloudFormation modello, consulta le seguenti sezioni nella Guida per l'AWS CloudFormation utente:

Quando crei una risorsa Amazon EKS nel tuo NSD e desideri gestire Multus come parte del tuo modello di distribuzione, devi fornire l'multus_roleattributo per specificare quale ruolo verrà utilizzato per la gestione di Multus.

L'esempio seguente mostra un CloudFormation modello che crea un ruolo di servizio AWS TNB per una policy Multus.

AWSTemplateFormatVersion: "2010-09-09" Resources: TNBMultusRole: Type: "AWS::IAM::Role" Properties: RoleName: "TNBMultusRole" AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: - events.amazonaws.com Action: - "sts:AssumeRole" - Effect: Allow Principal: Service: - codebuild.amazonaws.com Action: - "sts:AssumeRole" Path: / Policies: - PolicyName: MultusRoleInlinePolicy PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - "codebuild:StartBuild" - "logs:DescribeLogStreams" - "logs:PutLogEvents" - "logs:CreateLogGroup" - "logs:CreateLogStream" Resource: - "arn:aws:codebuild:*:*:project/tnb*" - "arn:aws:logs:*:*:log-group:/aws/tnb/*" - Effect: Allow Action: - "ec2:CreateNetworkInterface" - "ec2:ModifyNetworkInterfaceAttribute" - "ec2:AttachNetworkInterface" - "ec2:DeleteNetworkInterface" - "ec2:CreateTags" - "ec2:DetachNetworkInterface" Resource: "*"

Per ulteriori informazioni sui ruoli IAM che utilizzano il AWS CloudFormation modello, consulta le seguenti sezioni nella Guida per l'AWS CloudFormation utente:

Quando il tuo NSD o il tuo pacchetto di funzioni di rete utilizza un hook del ciclo di vita, hai bisogno di un ruolo di servizio che ti consenta di creare un ambiente per l'esecuzione dei tuoi hook del ciclo di vita.

Nota

La vostra politica sui ganci del ciclo di vita dovrebbe basarsi su ciò che il ciclo di vita sta tentando di fare.

L'esempio seguente mostra un CloudFormation modello che crea un ruolo di servizio AWS TNB per una policy relativa al ciclo di vita.

AWSTemplateFormatVersion: "2010-09-09" Resources: TNBHookRole: Type: "AWS::IAM::Role" Properties: RoleName: "TNBHookRole" AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: - codebuild.amazonaws.com Action: - "sts:AssumeRole" Path: / ManagedPolicyArns: - !Sub "arn:${AWS::Partition}:iam::aws:policy/AdministratorAccess"

Per ulteriori informazioni sui ruoli IAM che utilizzano il AWS CloudFormation modello, consulta le seguenti sezioni nella Guida per l'AWS CloudFormation utente:

Consentire agli utenti di visualizzare le loro autorizzazioni

Questo esempio mostra in che modo è possibile creare una policy che consente agli utenti IAM di visualizzare le policy inline e gestite che sono collegate alla relativa identità utente. Questa policy include le autorizzazioni per completare questa azione sulla console o a livello di codice utilizzando l' AWS CLI API or. AWS

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }