Contoh kebijakan Amazon VPC - Amazon Virtual Private Cloud

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

Contoh kebijakan Amazon VPC

Secara default, peran IAM tidak memiliki izin untuk membuat atau memodifikasi sumber daya VPC. Mereka juga tidak dapat melakukan tugas menggunakan AWS Management Console, AWS CLI, atau AWS API. Administrator IAM harus membuat kebijakan IAM yang memberikan izin peran untuk melakukan operasi API tertentu pada sumber daya tertentu yang mereka butuhkan. Administrator kemudian harus melampirkan kebijakan tersebut ke peran IAM yang memerlukan izin tersebut.

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

Praktik terbaik kebijakan

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

  • Mulailah dengan kebijakan AWS terkelola dan beralih ke izin hak istimewa paling sedikit — Untuk mulai memberikan izin kepada pengguna dan beban kerja Anda, gunakan kebijakan AWS terkelola 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 ketentuan untuk memberikan akses ke tindakan layanan jika digunakan melalui yang spesifik Layanan AWS, seperti AWS 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 mengharuskan pengguna IAM atau pengguna root di Anda, 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.

Gunakan konsol Amazon VPC

Untuk mengakses konsol Amazon VPC, Anda harus memiliki satu set izin minimum. Izin ini harus memungkinkan Anda untuk membuat daftar dan melihat detail tentang sumber daya VPC Amazon di AWS akun Anda. Jika Anda membuat kebijakan berbasis identitas yang lebih ketat daripada izin minimum yang diperlukan, konsol tidak akan berfungsi sebagaimana dimaksud untuk entitas (peran IAM) dengan kebijakan tersebut.

Kebijakan berikut memberikan izin peran untuk mencantumkan sumber daya di konsol VPC, tetapi tidak untuk membuat, memperbarui, atau menghapusnya.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeClassicLinkInstances", "ec2:DescribeClientVpnEndpoints", "ec2:DescribeCustomerGateways", "ec2:DescribeDhcpOptions", "ec2:DescribeEgressOnlyInternetGateways", "ec2:DescribeFlowLogs", "ec2:DescribeInternetGateways", "ec2:DescribeManagedPrefixLists", "ec2:DescribeMovingAddresses", "ec2:DescribeNatGateways", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaceAttribute", "ec2:DescribeNetworkInterfacePermissions", "ec2:DescribeNetworkInterfaces", "ec2:DescribePrefixLists", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroupReferences", "ec2:DescribeSecurityGroups", "ec2:DescribeSecurityGroupRules", "ec2:DescribeStaleSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeTrafficMirrorFilters", "ec2:DescribeTrafficMirrorSessions", "ec2:DescribeTrafficMirrorTargets", "ec2:DescribeTransitGateways", "ec2:DescribeTransitGatewayVpcAttachments", "ec2:DescribeTransitGatewayRouteTables", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcClassicLink", "ec2:DescribeVpcClassicLinkDnsSupport", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcEndpointConnectionNotifications", "ec2:DescribeVpcEndpointConnections", "ec2:DescribeVpcEndpointServiceConfigurations", "ec2:DescribeVpcEndpointServicePermissions", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcPeeringConnections", "ec2:DescribeVpcs", "ec2:DescribeVpnConnections", "ec2:DescribeVpnGateways", "ec2:GetManagedPrefixListAssociations", "ec2:GetManagedPrefixListEntries" ], "Resource": "*" } ] }

Anda tidak perlu mengizinkan izin konsol minimum untuk peran yang membuat panggilan hanya ke AWS CLI atau AWS API. Sebagai gantinya, izinkan akses hanya ke tindakan yang cocok dengan operasi API yang perlu dilakukan peran.

Buat sebuah VPC dengan subnet publik

Contoh berikut memungkinkan peran untuk membuat VPCs, subnet, tabel rute, dan gateway internet. Peran juga dapat melampirkan gateway internet ke VPC dan membuat rute dalam tabel rute. ec2:ModifyVpcAttributeTindakan ini memungkinkan peran untuk mengaktifkan nama host DNS untuk VPC, sehingga setiap instance yang diluncurkan ke VPC menerima nama host DNS.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute" ], "Resource": "*" } ] }

Kebijakan sebelumnya juga memungkinkan peran untuk membuat VPC di konsol VPC Amazon.

Modifikasi dan hapus sumber daya VPC

Anda mungkin ingin mengontrol sumber daya VPC yang dapat dimodifikasi atau dihapus oleh peran. Misalnya, kebijakan berikut memungkinkan peran untuk bekerja dengan dan menghapus tabel rute yang memiliki tagPurpose=Test. Kebijakan ini juga menetapkan bahwa peran hanya dapat menghapus gateway internet yang memiliki tag. Purpose=Test Peran tidak dapat bekerja dengan tabel rute atau gateway internet yang tidak memiliki tag ini.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DeleteInternetGateway", "Resource": "arn:aws:ec2:*:*:internet-gateway/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Test" } } }, { "Effect": "Allow", "Action": [ "ec2:DeleteRouteTable", "ec2:CreateRoute", "ec2:ReplaceRoute", "ec2:DeleteRoute" ], "Resource": "arn:aws:ec2:*:*:route-table/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Test" } } } ] }

Mengelola grup keamanan

Kebijakan berikut memungkinkan peran untuk mengelola grup keamanan. Pernyataan pertama memungkinkan peran untuk menghapus grup keamanan apa pun dengan tag Stack=test dan untuk mengelola aturan masuk dan keluar untuk grup keamanan apa pun dengan tag. Stack=test Pernyataan kedua membutuhkan peran untuk menandai grup keamanan apa pun yang mereka buat dengan tagStack=Test. Pernyataan ketiga memungkinkan peran untuk membuat tag saat membuat grup keamanan. Pernyataan keempat memungkinkan peran untuk melihat kelompok keamanan dan aturan grup keamanan apa pun. Pernyataan kelima memungkinkan peran untuk membuat grup keamanan dalam VPC.

catatan

Kebijakan ini tidak dapat digunakan oleh AWS CloudFormation layanan untuk membuat grup keamanan dengan tag yang diperlukan. Jika Anda menghapus kondisi pada ec2:CreateSecurityGroup tindakan yang memerlukan tag, kebijakan akan berfungsi.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RevokeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:UpdateSecurityGroupRuleDescriptionsEgress", "ec2:RevokeSecurityGroupEgress", "ec2:DeleteSecurityGroup", "ec2:ModifySecurityGroupRules", "ec2:UpdateSecurityGroupRuleDescriptionsIngress" ], "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Stack": "test" } } }, { "Effect": "Allow", "Action": "ec2:CreateSecurityGroup", "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "aws:RequestTag/Stack": "test" }, "ForAllValues:StringEquals": { "aws:TagKeys": "Stack" } } }, { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateSecurityGroup" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroupRules", "ec2:DescribeVpcs", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:CreateSecurityGroup", "Resource": "arn:aws:ec2:*:*:vpc/*" } ] }

Untuk mengizinkan peran mengubah grup keamanan yang terkait dengan instance, tambahkan ec2:ModifyInstanceAttribute tindakan tersebut ke kebijakan Anda.

Untuk mengizinkan peran mengubah grup keamanan untuk antarmuka jaringan, tambahkan ec2:ModifyNetworkInterfaceAttribute tindakan ke kebijakan Anda.

Mengelola aturan grup keamanan

Kebijakan berikut memberikan izin peran untuk melihat semua grup keamanan dan aturan grup keamanan, menambah dan menghapus aturan masuk dan keluar untuk grup keamanan untuk VPC tertentu, dan mengubah deskripsi aturan untuk VPC tertentu. Pernyataan pertama menggunakan kunci syarat ec2:Vpc untuk membatasi cakupan izin untuk VPC tertentu.

Pernyataan kedua memberikan izin peran untuk menjelaskan semua grup keamanan, aturan grup keamanan, dan tag. Ini memungkinkan peran untuk melihat aturan grup keamanan untuk memodifikasinya.

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:RevokeSecurityGroupIngress", "ec2:UpdateSecurityGroupRuleDescriptionsIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupEgress", "ec2:UpdateSecurityGroupRuleDescriptionsEgress", "ec2:ModifySecurityGroupRules" ], "Resource": "arn:aws:ec2:region:account-id:security-group/*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/vpc-id" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeSecurityGroupRules", "ec2:DescribeTags" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:ModifySecurityGroupRules" ], "Resource": "arn:aws:ec2:region:account-id:security-group-rule/*" } ] }

Luncurkan instans ke dalam subnet tertentu

Kebijakan berikut memberikan izin peran untuk meluncurkan instans ke subnet tertentu dan menggunakan grup keamanan tertentu dalam permintaan. Kebijakan melakukan ini dengan menentukan ARN untuk subnet dan ARN untuk kelompok keamanan. Jika peran mencoba meluncurkan instance ke subnet yang berbeda atau menggunakan grup keamanan yang berbeda, permintaan akan gagal (kecuali kebijakan atau pernyataan lain memberikan izin peran untuk melakukannya).

Kebijakan ini juga memberikan izin untuk menggunakan sumber daya antarmuka jaringan. Saat meluncurkan ke subnet, RunInstances permintaan membuat antarmuka jaringan utama secara default, sehingga peran tersebut memerlukan izin untuk membuat sumber daya ini saat meluncurkan instance.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:subnet/subnet-id", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/sg-id" ] } ] }

Meluncurkan instans ke VPC tertentu

Kebijakan berikut memberikan izin peran untuk meluncurkan instance ke subnet apa pun dalam VPC tertentu. Kebijakan tersebut dapat berbuat demikian dengan menerapkan kunci syarat (ec2:Vpc) ke sumber daya subnet.

Kebijakan ini juga memberikan izin peran untuk meluncurkan instance hanya menggunakan AMIs yang memiliki tag "”department=dev.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:subnet/*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/vpc-id" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region::image/ami-*", "Condition": { "StringEquals": { "ec2:ResourceTag/department": "dev" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }

Memblokir akses publik ke VPCs dan subnet

Contoh kebijakan berikut memberikan izin peran untuk bekerja dengan fitur VPC Block Public Access (BPA) untuk memblokir akses publik ke sumber daya dan subnet. VPCs

Contoh 1 - Izinkan akses hanya-baca ke pengaturan seluruh akun VPC BPA dan pengecualian VPC BPA.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VPCBPAReadOnlyAccess", "Action": [ "ec2:DescribeVpcBlockPublicAccessOptions", "ec2:DescribeVpcBlockPublicAccessExclusions" ], "Effect": "Allow", "Resource": "*" } ] }

Contoh 2 - Izinkan akses baca dan tulis penuh ke pengaturan seluruh akun VPC BPA dan pengecualian VPC BPA.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VPCBPAFullAccess", "Action": [ "ec2:DescribeVpcBlockPublicAccessOptions", "ec2:DescribeVpcBlockPublicAccessExclusions", "ec2:ModifyVpcBlockPublicAccessOptions", "ec2:CreateVpcBlockPublicAccessExclusion", "ec2:ModifyVpcBlockPublicAccessExclusion", "ec2:DeleteVpcBlockPublicAccessExclusion" ], "Effect": "Allow", "Resource": "*" } ] }

Contoh 3 - Izinkan akses ke semua EC2 APIs kecuali memodifikasi pengaturan VPC BPA dan membuat pengecualian.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EC2FullAccess" "Action": [ "ec2:*", ], "Effect": "Allow", "Resource": "*" }, { "Sid": "VPCBPAPartialAccess", "Action": [ "ec2:ModifyVpcBlockPublicAccessOptions", "ec2:CreateVpcBlockPublicAccessExclusion" ], "Effect": "Deny", "Resource": "*" } ] }

Contoh kebijakan Amazon VPC tambahan

Anda dapat menemukan contoh tambahan kebijakan IAM yang terkait dengan Amazon VPC dalam dokumentasi berikut: