Menyebarkan kontrol akses berbasis atribut preventif untuk subnet publik - AWS Prescriptive Guidance

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

Menyebarkan kontrol akses berbasis atribut preventif untuk subnet publik

Joel Alfredo Nunez Gonzalez dan Samuel Ortega Sancho, Amazon Web Services

Ringkasan

Dalam arsitektur jaringan terpusat, inspeksi dan edge virtual private cloud (VPCs) memusatkan semua lalu lintas masuk dan keluar, seperti lalu lintas ke dan dari internet. Namun, hal ini dapat menimbulkan kemacetan atau mengakibatkan tercapainya batas kuota layanan AWS. Menerapkan keamanan tepi jaringan di samping beban kerja di dalamnya VPCs memberikan skalabilitas yang belum pernah terjadi sebelumnya dibandingkan dengan pendekatan terpusat yang lebih umum. Ini disebut arsitektur tepi terdistribusi.

Meskipun menyebarkan subnet publik di akun beban kerja dapat memberikan manfaat, itu juga memperkenalkan risiko keamanan baru karena meningkatkan permukaan serangan. Kami menyarankan agar Anda hanya menggunakan sumber daya Elastic Load Balancing (ELB), seperti Application Load Balancers, atau gateway NAT di subnet publik ini. VPCs Menggunakan penyeimbang beban dan gateway NAT dalam subnet publik khusus membantu Anda menerapkan kontrol halus untuk lalu lintas masuk dan keluar.

Attribute-based access control (ABAC) adalah praktik membuat izin berbutir halus berdasarkan atribut pengguna, seperti departemen, peran pekerjaan, dan nama tim. Untuk informasi selengkapnya, lihat ABAC for AWS. ABAC dapat menyediakan pagar pembatas untuk subnet publik di akun beban kerja. Ini membantu tim aplikasi menjadi gesit, tanpa mengorbankan keamanan infrastruktur.

Pola ini menjelaskan cara membantu mengamankan subnet publik dengan menerapkan ABAC melalui kebijakan kontrol layanan (SCP) di AWS Organizations dan kebijakan di AWS Identity and Access Management (IAM). Anda menerapkan SCP ke akun anggota organisasi atau unit organisasi (OU). Kebijakan ABAC ini memungkinkan pengguna untuk menerapkan gateway NAT di subnet target dan mencegahnya menerapkan sumber daya Amazon Elastic Compute Cloud (Amazon EC2) lainnya, seperti instance dan antarmuka jaringan elastis. EC2   

Prasyarat dan batasan

Prasyarat

  • Organisasi di AWS Organizations

  • Akses administratif ke akun root AWS Organizations

  • Di organisasi, akun anggota aktif atau OU untuk menguji SCP

Batasan

  • SCP dalam solusi ini tidak mencegah layanan AWS yang menggunakan peran terkait layanan untuk menerapkan sumber daya di subnet target. Contoh layanan ini adalah Elastic Load Balancing (ELB), Amazon Elastic Container Service (Amazon ECS) Container Service (Amazon ECS), dan Amazon Relational Database Service (Amazon RDS). Untuk informasi selengkapnya, lihat efek SCP pada izin dalam dokumentasi AWS Organizations. Menerapkan kontrol keamanan untuk mendeteksi pengecualian ini.

Arsitektur

Tumpukan teknologi target

  • SCP diterapkan ke akun AWS atau OU di AWS Organizations

  • Peran IAM berikut:

    • AutomationAdminRole— Digunakan untuk memodifikasi tag subnet dan membuat sumber daya VPC setelah menerapkan SCP

    • TestAdminRole— Digunakan untuk menguji apakah SCP mencegah prinsipal IAM lainnya, termasuk mereka yang memiliki akses administratif, dari melakukan tindakan yang disediakan untuk AutomationAdminRole

Arsitektur target

Tag mencegah pengguna menyebarkan sumber daya selain gateway NAT di subnet publik
  1. Anda membuat peran AutomationAdminRole IAM di akun target. Peran ini memiliki izin untuk mengelola sumber daya jaringan. Perhatikan izin berikut yang eksklusif untuk peran ini:

    • Peran ini dapat membuat VPCs dan subnet publik.

    • Peran ini dapat memodifikasi penetapan tag untuk subnet target.

    • Peran ini dapat mengelola izinnya sendiri.

  2. Di AWS Organizations, Anda menerapkan SCP ke akun AWS target atau OU. Untuk kebijakan sampel, lihat Informasi tambahan dalam pola ini.

  3. Seorang pengguna atau alat dalam CI/CD pipeline dapat mengambil AutomationAdminRole peran untuk menerapkan SubnetType tag ke subnet target.

  4. Dengan mengasumsikan peran IAM lainnya, prinsipal IAM resmi di organisasi Anda dapat mengelola gateway NAT di subnet target dan sumber daya jaringan lain yang diizinkan di akun AWS, seperti tabel rute. Gunakan kebijakan IAM untuk memberikan izin ini. Untuk informasi selengkapnya, lihat Identitas dan manajemen akses untuk Amazon VPC.

Otomatisasi dan skala

Untuk membantu melindungi subnet publik, tag AWS yang sesuai harus diterapkan. Setelah menerapkan SCP, gateway NAT adalah satu-satunya jenis EC2 sumber daya Amazon yang dapat dibuat oleh pengguna resmi di subnet yang memiliki tag. SubnetType:IFA (IFAberarti aset yang menghadap internet.) SCP mencegah pembuatan EC2 sumber daya Amazon lainnya, seperti instance dan antarmuka jaringan elastis. Kami menyarankan Anda menggunakan CI/CD pipeline yang mengasumsikan AutomationAdminRole peran untuk membuat sumber daya VPC sehingga tag ini diterapkan dengan benar ke subnet publik.

Alat

Layanan AWS

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Organizations adalah layanan manajemen akun yang membantu Anda mengkonsolidasikan beberapa akun AWS ke dalam organisasi yang Anda buat dan kelola secara terpusat. Di AWS Organizations, Anda dapat menerapkan kebijakan kontrol layanan (SCPs), yang merupakan jenis kebijakan yang dapat Anda gunakan untuk mengelola izin di organisasi Anda.

  • Amazon Virtual Private Cloud (Amazon VPC) membantu Anda meluncurkan sumber daya AWS ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur AWS yang dapat diskalakan.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat peran admin pengujian.

Buat peran IAM yang dinamai TestAdminRole di akun AWS target. Lampirkan kebijakan IAM terkelola AdministratorAccessAWS ke peran baru. Untuk petunjuknya, lihat Membuat peran untuk mendelegasikan izin ke pengguna IAM dalam dokumentasi IAM.

Administrator AWS

Buat peran admin otomatisasi.

  1. Buat peran IAM yang dinamai AutomationAdminRole di akun AWS target.

  2. Lampirkan kebijakan IAM terkelola AdministratorAccessAWS ke peran baru.

Berikut ini adalah contoh kebijakan kepercayaan yang dapat Anda gunakan untuk menguji peran dari 111122223333 akun.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }
Administrator AWS

Buat dan lampirkan SCP.

  1. Menggunakan kode sampel yang disediakan di bagian Informasi tambahan, buat kebijakan kontrol keamanan. Untuk petunjuknya, lihat Membuat SCP di dokumentasi AWS Organizations.

  2. Lampirkan SCP ke akun AWS target atau OU. Untuk petunjuk, lihat Melampirkan dan melepaskan kebijakan kontrol layanan dalam dokumentasi AWS Organizations.

Administrator AWS
TugasDeskripsiKeterampilan yang dibutuhkan

Buat VPC atau subnet.

  1. Asumsikan TestAdminRole peran dalam akun AWS target.

  2. Cobalah untuk membuat VPC atau subnet publik baru di VPC yang ada. Untuk petunjuknya, lihat Membuat VPC, subnet, dan sumber daya VPC lainnya di dokumentasi Amazon VPC. Anda seharusnya tidak dapat membuat sumber daya ini.

  3. Asumsikan AutomationAdminRole peran, dan coba lagi langkah sebelumnya. Sekarang, Anda harus dapat membuat sumber daya jaringan.

Administrator AWS

Kelola tag.

  1. Asumsikan TestAdminRole peran dalam akun AWS target.

  2. Tambahkan SubnetType:IFA tag ke subnet publik yang tersedia. Anda harus dapat menambahkan tag ini. Untuk petunjuk tentang cara menambahkan tag melalui AWS Command Line Interface (AWS CLI) Interface, lihat membuat tag di AWS CLI Command Reference.

  3. Tanpa mengubah kredensil Anda, cobalah untuk memodifikasi SubnetType:IFA tag yang ditetapkan ke subnet ini. Anda seharusnya tidak dapat memodifikasi tag ini.

  4. Asumsikan AutomationAdminRole peran, dan coba lagi langkah-langkah sebelumnya. Peran ini harus dapat menambahkan dan memodifikasi tag ini.

Administrator AWS

Menyebarkan sumber daya di subnet target.

  1. Asumsikan TestAdminRole peran.

  2. Untuk subnet publik yang memiliki SubnetType:IFA tag, coba buat EC2 instance. Untuk petunjuknya, lihat Meluncurkan instance di EC2 dokumentasi Amazon. Di subnet ini, Anda seharusnya tidak dapat membuat, memodifikasi, atau menghapus EC2 sumber daya Amazon apa pun kecuali gateway NAT.

  3. Di subnet yang sama, buat gateway NAT. Untuk petunjuknya, lihat Membuat gateway NAT di dokumentasi Amazon VPC. Anda harus dapat membuat, memodifikasi, atau menghapus gateway NAT di subnet ini.

Administrator AWS

Kelola AutomationAdminRole peran.

  1. Asumsikan TestAdminRole peran.

  2. Cobalah untuk memodifikasi AutomationAdminRole peran. Untuk petunjuk, lihat Memodifikasi peran dalam dokumentasi IAM. Anda seharusnya tidak dapat mengubah peran ini.

  3. Asumsikan AutomationAdminRole peran, dan coba lagi langkah sebelumnya. Sekarang, Anda harus dapat memodifikasi peran.

Administrator AWS
TugasDeskripsiKeterampilan yang dibutuhkan

Bersihkan sumber daya yang digunakan.

  1. Lepaskan SCP dari akun AWS atau OU. Untuk petunjuknya, lihat Melepaskan SCP dalam dokumentasi AWS Organizations.

  2. Hapus SCP. Untuk petunjuk, lihat Menghapus SCP (dokumentasi AWS Organizations).

  3. Hapus AutomationAdminRole peran dan TestAdminRole peran. Untuk petunjuk, lihat Menghapus peran dalam dokumentasi IAM.

  4. Hapus semua sumber daya jaringan, seperti VPCs dan subnet, yang Anda buat untuk solusi ini.

Administrator AWS

Sumber daya terkait

Dokumentasi AWS

Referensi AWS tambahan

Informasi tambahan

Kebijakan kontrol layanan berikut adalah contoh yang dapat Anda gunakan untuk menguji pendekatan ini di organisasi Anda.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyVPCActions", "Effect": "Deny", "Action": [ "ec2:CreateVPC", "ec2:CreateRoute", "ec2:CreateSubnet", "ec2:CreateInternetGateway", "ec2:DeleteVPC", "ec2:DeleteRoute", "ec2:DeleteSubnet", "ec2:DeleteInternetGateway" ], "Resource": [ "arn:aws:ec2:*:*:*" ], "Condition": { "StringNotLike": { "aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"] } } }, { "Sid": "AllowNATGWOnIFASubnet", "Effect": "Deny", "NotAction": [ "ec2:CreateNatGateway", "ec2:DeleteNatGateway" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*" ], "Condition": { "ForAnyValue:StringEqualsIfExists": { "aws:ResourceTag/SubnetType": "IFA" }, "StringNotLike": { "aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"] } } }, { "Sid": "DenyChangesToAdminRole", "Effect": "Deny", "NotAction": [ "iam:GetContextKeysForPrincipalPolicy", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfilesForRole", "iam:ListRolePolicies", "iam:ListRoleTags" ], "Resource": [ "arn:aws:iam::*:role/AutomationAdminRole" ], "Condition": { "StringNotLike": { "aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"] } } } ] }