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, pengguna dan peran IAM tidak memiliki izin untuk membuat atau memodifikasi sumber daya VPC. Mereka juga tidak dapat melakukan tugas menggunakan API AWS Management Console, AWS CLI, atau AWS. Administrator IAM harus membuat kebijakan IAM yang memberikan izin kepada pengguna dan peran untuk melakukan operasi API tertentu pada sumber daya yang diperlukan. Administrator kemudian harus melampirkan kebijakan tersebut ke pengguna IAM atau grup yang memerlukan izin tersebut.

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

Praktik terbaik kebijakan

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

  • Memulai penggunaan kebijakan terkelola AWS – Untuk segera memulai penggunaan Amazon VPC, gunakan kebijakan terkelola AWS agar para karyawan mendapatkan izin yang diperlukan. Kebijakan ini sudah tersedia di akun Anda dan dikelola, serta diperbarui oleh AWS. Untuk informasi selengkapnya, lihat Memulai menggunakan izin dengan kebijakan yang dikelola AWS dalam Panduan Pengguna IAM.

  • Pemberian hak istimewa terendah – Ketika Anda membuat kebijakan kustom, berikan izin yang diperlukan saja untuk melakukan tugas. Mulai dengan satu set izin minimum dan berikan izin tambahan sesuai kebutuhan. Melakukan hal tersebut lebih aman daripada memulai dengan izin yang terlalu fleksibel, lalu mencoba memperketatnya nanti. Untuk informasi selengkapnya, lihat Pemberian hak istimewa terendah dalam Panduan Pengguna IAM.

  • Aktifkan autentikasi multifaktor (MFA) untuk operasi sensitif – Untuk keamanan ekstra, mintalah pengguna IAM untuk menggunakan autentikasi multifaktor (MFA) guna mengakses sumber daya atau operasi API yang sensitif. Untuk informasi selengkapnya, lihat Menggunakan autentikasi multifaktor (MFA) dalam AWS dalam Panduan Pengguna IAM.

  • Gunakan syarat kebijakan untuk keamanan tambahan – Selama bisa dilakukan, tentukan persyaratan agar kebijakan berbasis identitas Anda mengizinkan akses ke sumber daya. Misalnya, Anda dapat menulis persyaratan untuk menentukan jangkauan alamat IP yang diizinkan untuk mengajukan permintaan. Anda juga dapat menulis ketentuan untuk mengizinkan permintaan hanya dalam rentang tanggal atau waktu tertentu, atau untuk mengharuskan penggunaan SSL atau MFA. Untuk informasi lebih lanjut, lihat Elemen kebijakan IAM JSON: Ketentuan dalam Panduan Pengguna IAM.

Gunakan konsol Amazon VPC

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

Kebijakan berikut memberikan izin pengguna 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 meloloskan izin konsol minimum untuk pengguna yang hanya melakukan panggilan ke AWS CLI atau API AWS. Sebagai gantinya, untuk pengguna yang demikian, izinkan akses hanya ke tindakan yang cocok dengan operasi API yang perlu mereka lakukan.

Buat sebuah VPC dengan subnet publik

Contoh berikut memungkinkan pengguna untuk membuat VPC, subnet, tabel rute, dan gateway internet. Pengguna juga dapat melampirkan gateway internet untuk VPC dan membuat rute dalam tabel rute. Tindakan ec2:ModifyVpcAttribute memungkinkan para pengguna untuk mengaktifkan nama host DNS untuk VPC, sehingga setiap instans 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 pengguna untuk membuat VPC di konsol Amazon VPC.

Modifikasi dan hapus sumber daya VPC

Anda mungkin ingin mengendalikan pengguna sumber daya VPC mana yang dapat mengubah atau menghapus. Sebagai contoh, kebijakan berikut mengizinkan pengguna untuk bekerja dan menghapus tabel rute yang memiliki tag Purpose=Test. Kebijakan ini juga menetapkan bahwa pengguna hanya dapat menghapus gateway internet yang memiliki tag Purpose=Test. Pengguna 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 mengizinkan para pengguna untuk mengelola grup keamanan. Pernyataan pertama mengizinkan para pengguna untuk menghapus grup keamanan dengan tagStack=testdan mengelola aturan ke dalam dan ke luar untuk grup keamanan apa pun dengan tagStack=test. Pernyataan kedua mengharuskan para pengguna untuk memberi tag setiap grup keamanan yang diberi tagStack=Test. Pernyataan ketiga mengizinkan para pengguna untuk membuat tag saat membuat grup keamanan. Pernyataan keempat mengizinkan para pengguna untuk melihat grup keamanan dan aturan grup keamanan. Pernyataan kelima mengizinkan para pengguna untuk membuat grup keamanan di VPC.

{ "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 pengguna mengubah grup keamanan yang dikaitkan dengan instans, tambahkan tindakan ec2:ModifyInstanceAttribute ke kebijakan Anda.

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

Mengelola aturan grup keamanan

Kebijakan berikut memberikan izin kepada para pengguna untuk melihat semua grup keamanan dan aturan grup keamanan, tambahkan dan buang aturan inbound dan outbound untuk grup keamanan untuk VPC tertentu, dan modifikasi deskripsi aturan untuk VPC tertentu. Pernyataan pertama menggunakan kunci syarat ec2:Vpc untuk membatasi cakupan izin untuk VPC tertentu.

Pernyataan kedua memberikan izin pengguna untuk menjelaskan semua grup keamanan, aturan grup keamanan, dan tag. Hal ini memungkinkan para pengguna untuk melihat aturan grup keamanan agar bisa 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": "*" } ] }

Luncurkan instans ke dalam subnet tertentu

Kebijakan berikut memberikan izin para pengguna untuk meluncurkan instans ke subnet tertentu, dan menggunakan grup keamanan tertentu dalam permintaan. Kebijakan tersebut dapat berbuat demikian dengan menentukan ARN untuk subnet dan ARN untuk grup keamanan. Jika para pengguna mencoba untuk meluncurkan sebuah instans ke subnet yang berbeda atau menggunakan grup keamanan yang berbeda, permintaan akan gagal (kecuali kebijakan atau pernyataan lainnya memberikan izin kepada pengguna untuk melakukannya).

Kebijakan ini juga memberikan izin untuk menggunakan sumber daya antarmuka jaringan. Ketika meluncurkan ke dalam sebuah subnet, permintaan RunInstances menciptakan antarmuka jaringan utama secara default, sehingga pengguna membutuhkan izin untuk membuat sumber daya ini ketika meluncurkan instans.

{ "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 kepada para pengguna untuk meluncurkan instans ke dalam subnet apa pun di dalam VPC tertentu. Kebijakan tersebut dapat berbuat demikian dengan menerapkan kunci syarat (ec2:Vpc) ke sumber daya subnet.

Kebijakan ini juga memberikan izin kepada para pengguna untuk meluncurkan instans-instans menggunakan AMI yang memiliki tag "department=dev" saja.

{ "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/*" ] } ] }

Contoh kebijakan Amazon VPC tambahan

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