View a markdown version of this page

Identity-based Contoh kebijakan untuk AWS Pembangun Jaringan Telco - AWS Pembangun Jaringan Telco

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Identity-based Contoh kebijakan untuk AWS Pembangun Jaringan Telco

Secara default, pengguna dan peran tidak memiliki izin untuk membuat atau memodifikasi sumber daya AWS TNB. Untuk memberikan izin kepada pengguna untuk melakukan tindakan di sumber daya yang mereka perlukan, administrator IAM dapat membuat kebijakan IAM.

Untuk mempelajari cara membuat kebijakan berbasis identitas IAM dengan menggunakan contoh dokumen kebijakan JSON ini, lihat Membuat kebijakan IAM (konsol) di Panduan Pengguna IAM.

Untuk detail tentang tindakan dan jenis sumber daya yang ditentukan oleh AWS TNB, termasuk format ARN untuk setiap jenis sumber daya, lihat Tindakan, sumber daya, dan kunci kondisi untuk Pembuat Jaringan AWS Telco di Referensi Otorisasi Layanan.

Praktik terbaik kebijakan

Identity-based kebijakan menentukan apakah seseorang dapat membuat, mengakses, atau menghapus sumber daya AWS TNB di akun Anda. Tindakan ini membuat Akun AWS Anda dikenai biaya. Ketika Anda membuat atau mengedit kebijakan berbasis identitas, ikuti panduan dan rekomendasi ini:

  • Memulai kebijakan AWS terkelola dan beralih ke izin hak istimewa terendah — Untuk mulai memberikan izin kepada pengguna dan beban kerja Anda, gunakan kebijakan terkel AWS ola yang memberikan izin untuk banyak kasus penggunaan umum. Mereka tersedia di Anda Akun AWS. Kami menyarankan Anda mengurangi izin lebih lanjut dengan menentukan kebijakan yang dikelola AWS pelanggan yang khusus untuk kasus penggunaan Anda. Untuk informasi selengkapnya, lihat Kebijakan yang dikelola AWS atau Kebijakan yang dikelola AWS untuk fungsi tugas dalam Panduan Pengguna IAM.

  • Menerapkan izin dengan hak akses paling rendah – Ketika Anda menetapkan izin dengan kebijakan IAM, hanya berikan izin yang diperlukan untuk melakukan tugas. Anda melakukannya dengan mendefinisikan tindakan yang dapat diambil pada sumber daya tertentu dalam kondisi tertentu, yang juga dikenal sebagai izin dengan hak akses paling rendah. Untuk informasi selengkapnya tentang cara menggunakan IAM untuk mengajukan izin, lihat Kebijakan dan izin dalam IAM dalam Panduan Pengguna IAM.

  • Gunakan kondisi dalam kebijakan IAM untuk membatasi akses lebih lanjut – Anda dapat menambahkan suatu kondisi ke kebijakan Anda untuk membatasi akses ke tindakan dan sumber daya. Sebagai contoh, Anda dapat menulis kondisi kebijakan untuk menentukan bahwa semua permintaan harus dikirim menggunakan SSL. Anda juga dapat menggunakan kondisi untuk memberikan akses ke tindakan layanan jika digunakan melalui tindakan tertentu Layanan AWS, seperti CloudFormation. Untuk informasi selengkapnya, lihat Elemen kebijakan JSON IAM: Kondisi dalam Panduan Pengguna IAM.

  • Gunakan IAM Access Analyzer untuk memvalidasi kebijakan IAM Anda untuk memastikan izin yang aman dan fungsional – IAM Access Analyzer memvalidasi kebijakan baru dan yang sudah ada sehingga kebijakan tersebut mematuhi bahasa kebijakan IAM (JSON) dan praktik terbaik IAM. IAM Access Analyzer menyediakan lebih dari 100 pemeriksaan kebijakan dan rekomendasi yang dapat ditindaklanjuti untuk membantu Anda membuat kebijakan yang aman dan fungsional. Untuk informasi selengkapnya, lihat Validasi kebijakan dengan IAM Access Analyzer dalam Panduan Pengguna IAM.

  • Memerlukan otentikasi multi-faktor (MFA) — Jika Anda memiliki skenario yang memerlukan pengguna IAM atau pengguna root Akun AWS, aktifkan MFA untuk keamanan tambahan. Untuk meminta MFA ketika operasi API dipanggil, tambahkan kondisi MFA pada kebijakan Anda. Untuk informasi selengkapnya, lihat Amankan akses API dengan MFA dalam Panduan Pengguna IAM.

Untuk informasi selengkapnya tentang praktik terbaik dalam IAM, lihat Praktik terbaik keamanan di IAM dalam Panduan Pengguna IAM.

Menggunakan AWS Konsol TNB

Untuk mengakses konsol AWS Telco Network Builder, Anda harus memiliki seperangkat izin minimum. Izin ini harus memungkinkan Anda untuk membuat daftar dan melihat detail tentang sumber daya AWS TNB di. Akun AWS Jika Anda membuat kebijakan berbasis identitas yang lebih ketat daripada izin minimum yang diperlukan, konsol tidak akan berfungsi sebagaimana mestinya untuk entitas (pengguna atau peran) dengan kebijakan tersebut.

Anda tidak perlu mengizinkan izin konsol minimum untuk pengguna yang melakukan panggilan hanya ke AWS CLI atau AWS API. Sebagai gantinya, izinkan akses hanya ke tindakan yang sesuai dengan operasi API yang coba mereka lakukan.

Contoh kebijakan peran layanan

Sebagai administrator, Anda memiliki dan mengelola sumber daya yang AWS dibuat TNB sebagaimana ditentukan oleh template lingkungan dan layanan. Anda harus melampirkan peran layanan IAM ke akun Anda untuk mengizinkan AWS TNB membuat sumber daya untuk manajemen siklus hidup jaringan Anda.

Peran layanan IAM memungkinkan AWS TNB melakukan panggilan ke sumber daya atas nama Anda untuk membuat instance dan mengelola jaringan Anda. Jika Anda menentukan peran layanan, AWS TNB menggunakan kredensi peran tersebut.

Anda membuat peran layanan dan kebijakan izinnya dengan layanan IAM. Untuk informasi selengkapnya tentang membuat peran layanan, lihat Membuat peran untuk mendelegasikan izin ke AWS layanan di Panduan Pengguna IAM.

Sebagai anggota tim platform, Anda dapat sebagai administrator membuat peran layanan AWS TNB dan memberikannya kepada AWS TNB. Peran ini memungkinkan AWS TNB melakukan panggilan ke layanan lain seperti Amazon Elastic Kubernetes Service dan menyediakan infrastruktur yang diperlukan CloudFormation untuk jaringan Anda dan menyediakan fungsi jaringan seperti yang didefinisikan dalam NSD Anda.

Sebaiknya gunakan peran IAM berikut dan kebijakan kepercayaan untuk peran layanan AWS TNB Anda. Saat menentukan cakupan izin pada kebijakan ini, ingatlah bahwa AWS TNB mungkin gagal karena kesalahan Akses Ditolak terhadap sumber daya yang dihilangkan dari kebijakan Anda.

Kode berikut menunjukkan kebijakan peran layanan 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" } ] }

Kode berikut menunjukkan kebijakan kepercayaan layanan 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" } ] }

Saat Anda membuat sumber daya Amazon EKS di NSD, Anda memberikan cluster_role atribut untuk menentukan peran mana yang akan digunakan untuk membuat cluster Amazon EKS Anda.

Contoh berikut menunjukkan AWS CloudFormation template yang membuat peran layanan AWS TNB untuk kebijakan 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"

Untuk informasi selengkapnya tentang peran IAM menggunakan AWS CloudFormation template, lihat bagian berikut di Panduan AWS CloudFormation Pengguna:

Saat Anda membuat sumber daya grup simpul Amazon EKS di NSD, Anda memberikan node_role atribut untuk menentukan peran mana yang akan digunakan untuk membuat grup simpul Amazon EKS Anda.

Contoh berikut menunjukkan CloudFormation template yang membuat peran layanan AWS TNB untuk kebijakan grup simpul 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/*"

Untuk informasi selengkapnya tentang peran IAM menggunakan AWS CloudFormation template, lihat bagian berikut di Panduan AWS CloudFormation Pengguna:

Saat membuat sumber daya Amazon EKS di NSD dan ingin mengelola Multus sebagai bagian dari template penerapan, Anda harus memberikan multus_role atribut untuk menentukan peran mana yang akan digunakan untuk mengelola Multus.

Contoh berikut menunjukkan CloudFormation template yang membuat peran layanan AWS TNB untuk kebijakan 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: "*"

Untuk informasi selengkapnya tentang peran IAM menggunakan AWS CloudFormation template, lihat bagian berikut di Panduan AWS CloudFormation Pengguna:

Ketika paket fungsi NSD atau jaringan Anda menggunakan kait siklus hidup, Anda memerlukan peran layanan untuk memungkinkan Anda menciptakan lingkungan untuk pelaksanaan kait siklus hidup Anda.

catatan

Kebijakan kait siklus hidup Anda harus didasarkan pada apa yang coba dilakukan oleh hook siklus hidup Anda.

Contoh berikut menunjukkan CloudFormation template yang membuat peran layanan AWS TNB untuk kebijakan kait siklus hidup.

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"

Untuk informasi selengkapnya tentang peran IAM menggunakan AWS CloudFormation template, lihat bagian berikut di Panduan AWS CloudFormation Pengguna:

Mengizinkan pengguna melihat izin mereka sendiri

Contoh ini menunjukkan cara membuat kebijakan yang mengizinkan pengguna IAM melihat kebijakan inline dan terkelola yang dilampirkan ke identitas pengguna mereka. Kebijakan ini mencakup izin untuk menyelesaikan tindakan ini di konsol atau secara terprogram menggunakan API AWS CLI 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": "*" } ] }