View a markdown version of this page

Identity-based ejemplos de políticas para AWS Telco Network Builder - AWS Creador de redes de telecomunicaciones

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Identity-based ejemplos de políticas para AWS Telco Network Builder

De forma predeterminada, los usuarios y los roles no tienen permiso para crear o modificar los recursos de AWS TNB. Un administrador de IAM puede crear políticas de IAM para conceder permisos a los usuarios para realizar acciones en los recursos que necesitan.

Para obtener información acerca de cómo crear una política basada en identidades de IAM mediante el uso de estos documentos de políticas JSON de ejemplo, consulte Creación de políticas de IAM (consola) en la Guía del usuario de IAM.

Para obtener más información sobre las acciones y los tipos de recursos definidos por AWS TNB, incluido el formato de los ARN de cada uno de los tipos de recursos, consulte las acciones, los recursos y las claves de condición de AWS Telco Network Builder en la referencia de autorización de servicios.

Prácticas recomendadas sobre las políticas

Identity-based las políticas determinan si alguien puede crear, acceder o eliminar los recursos de AWS TNB de su cuenta. Estas acciones pueden generar costos adicionales para su Cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas en identidades:

  • Empieza con las políticas AWS gestionadas y avanza hacia los permisos con privilegios mínimos: para empezar a conceder permisos a tus usuarios y cargas de trabajo, utiliza las políticas AWS gestionadas que conceden permisos en muchos casos de uso habituales. Están disponibles en su. Cuenta de AWS Le recomendamos que reduzca aún más los permisos definiendo políticas administradas por los AWS clientes que sean específicas para sus casos de uso. Con el fin de obtener más información, consulte las políticas administradas por AWS o las políticas administradas por AWS para funciones de tarea en la Guía de usuario de IAM.

  • Aplique permisos de privilegio mínimo: cuando establezca permisos con políticas de IAM, conceda solo los permisos necesarios para realizar una tarea. Para ello, debe definir las acciones que se pueden llevar a cabo en determinados recursos en condiciones específicas, también conocidos como permisos de privilegios mínimos. Con el fin de obtener más información sobre el uso de IAM para aplicar permisos, consulte Políticas y permisos en IAM en la Guía del usuario de IAM.

  • Utilice condiciones en las políticas de IAM para restringir aún más el acceso: puede agregar una condición a sus políticas para limitar el acceso a las acciones y los recursos. Por ejemplo, puede escribir una condición de políticas para especificar que todas las solicitudes deben enviarse utilizando SSL. También puedes usar condiciones para conceder acceso a las acciones de servicio si se utilizan a través de una acción específica Servicio de AWS, por ejemplo CloudFormation. Para obtener más información, consulte Elementos de la política de JSON de IAM: Condición en la Guía del usuario de IAM.

  • Utiliza el analizador de acceso de IAM para validar las políticas de IAM con el fin de garantizar la seguridad y funcionalidad de los permisos: el analizador de acceso de IAM valida políticas nuevas y existentes para que respeten el lenguaje (JSON) de las políticas de IAM y las prácticas recomendadas de IAM. El analizador de acceso de IAM proporciona más de 100 verificaciones de políticas y recomendaciones procesables para ayudar a crear políticas seguras y funcionales. Para más información, consulte Validación de políticas con el Analizador de acceso de IAM en la Guía del usuario de IAM.

  • Exigir la autenticación multifactor (MFA): si tienes una situación en la que se requieren usuarios de IAM o un usuario raíz Cuenta de AWS, activa la MFA para aumentar la seguridad. Para exigir la MFA cuando se invoquen las operaciones de la API, añada condiciones de MFA a sus políticas. Para más información, consulte Acceso seguro a la API con MFA en la Guía del usuario de IAM.

Para obtener más información sobre las prácticas recomendadas de IAM, consulte Prácticas recomendadas de seguridad en IAM en la Guía del usuario de IAM.

Uso de AWS Consola TNB

Para acceder a la consola de AWS Telco Network Builder, debe tener un conjunto mínimo de permisos. Estos permisos deben permitirle enumerar y ver detalles sobre los recursos de AWS TNB de su propiedad. Cuenta de AWS Si crea una política basada en identidades que sea más restrictiva que el mínimo de permisos necesarios, la consola no funcionará del modo esperado para las entidades (usuarios o roles) que tengan esa política.

No necesitas conceder permisos mínimos de consola a los usuarios que solo llamen a la API AWS CLI o a la AWS API. En su lugar, permita el acceso únicamente a las acciones que coincidan con la operación de API que intentan realizar.

Ejemplos de políticas de roles de servicio

Como administrador, usted posee y administra los recursos que crea AWS TNB según lo definido en las plantillas de entorno y servicio. Debe adjuntar las funciones de servicio de IAM a su cuenta para que AWS TNB pueda crear recursos para la administración del ciclo de vida de su red.

Una función de servicio de IAM permite a AWS TNB hacer llamadas a los recursos en su nombre para crear instancias y administrar sus redes. Si especificas un rol de servicio, AWS TNB usa la credencial de ese rol.

Puede crear el rol de servicio y su política de permisos con el servicio de IAM. Para obtener más información sobre la creación de un rol de servicio, consulte Crear un rol para delegar permisos a un AWS servicio en la Guía del usuario de IAM.

Como miembro del equipo de la plataforma, como administrador puede crear un rol de servicio de AWS TNB y proporcionárselo a AWS TNB. Esta función permite a AWS TNB realizar llamadas a otros servicios, como Amazon Elastic Kubernetes Service, y aprovisionar la infraestructura necesaria CloudFormation para su red y aprovisionar las funciones de red tal y como se definen en su NSD.

Se recomienda utilizar el siguiente rol de IAM y la política de confianza para el rol de servicio de AWS TNB. Al restringir los permisos de esta política, tenga en cuenta que AWS TNB puede fallar si se producen errores de acceso denegado a los recursos descritos en su política.

El siguiente código muestra una política de funciones de servicio de 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" } ] }

El siguiente código muestra la política de confianza del servicio de 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" } ] }

Al crear un recurso de Amazon EKS en su NSD, proporciona el atributo cluster_role para especificar qué rol se utilizará para crear su clúster de Amazon EKS.

El siguiente ejemplo muestra una AWS CloudFormation plantilla que crea un rol de servicio de AWS TNB para la política de clústeres de 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"

Para obtener más información sobre los roles de IAM que utilizan AWS CloudFormation una plantilla, consulte las siguientes secciones de la Guía del AWS CloudFormation usuario:

Al crear recursos de un grupo de nodos de Amazon EKS en su NSD, proporciona el atributo node_role para especificar qué rol se utilizará para crear su grupo de nodos de Amazon EKS.

El siguiente ejemplo muestra una CloudFormation plantilla que crea un rol de servicio de AWS TNB para la política de grupos de nodos de 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/*"

Para obtener más información sobre los roles de IAM que utilizan AWS CloudFormation una plantilla, consulte las siguientes secciones de la Guía del AWS CloudFormation usuario:

Cuando cree un recurso de Amazon EKS en su NSD y desee administrar Multus como parte de su plantilla de implementación, debe proporcionar el atributo multus_role para especificar qué rol se utilizará para administrar Multus.

El siguiente ejemplo muestra una CloudFormation plantilla que crea un rol de servicio de AWS TNB para una política de 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: "*"

Para obtener más información sobre las funciones de IAM que utilizan AWS CloudFormation una plantilla, consulte las siguientes secciones de la Guía del AWS CloudFormation usuario:

Cuando su NSD o paquete de funciones de red utiliza un enlace de ciclo de vida, necesita un rol de servicio que le permita crear un entorno para la ejecución de sus enlaces de ciclo de vida.

nota

Su política de enlace de ciclo de vida debe basarse en lo que intente hacer su enlace de ciclo de vida.

El siguiente ejemplo muestra una CloudFormation plantilla que crea una función de servicio de AWS TNB para una política de enganche a lo largo del ciclo de vida.

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"

Para obtener más información sobre las funciones de IAM que utilizan AWS CloudFormation una plantilla, consulte las siguientes secciones de la Guía del AWS CloudFormation usuario:

Cómo permitir a los usuarios consultar sus propios permisos

En este ejemplo, se muestra cómo podría crear una política que permita a los usuarios de IAM ver las políticas administradas e insertadas que se asocian a la identidad de sus usuarios. Esta política incluye los permisos para completar esta acción en la consola o mediante programación mediante la 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": "*" } ] }