View a markdown version of this page

Kontrol akses ke AWS STS dengan kebijakan titik akhir VPC - AWS Identity and Access Management

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

Kontrol akses ke AWS STS dengan kebijakan titik akhir VPC

Saat Anda membuat titik akhir VPC antarmuka untuk AWS Security Token Service (AWS STS), Anda dapat melampirkan kebijakan titik akhir. Kebijakan mengontrol prinsipal mana yang dapat menggunakan titik akhir dan AWS STS tindakan apa yang dapat mereka lakukan. Jika Anda tidak melampirkan kebijakan, titik akhir menggunakan kebijakan default yang memungkinkan akses tidak terbatas ke semua AWS STS tindakan untuk semua prinsipal.

Kebijakan titik akhir VPC tidak memberikan izin sendiri. Mereka bertindak sebagai batas tambahan yang bekerja bersama kebijakan lain. Kebijakan endpoint dan kebijakan pemanggil yang berlaku harus memungkinkan permintaan agar berhasil.

Untuk informasi selengkapnya tentang kebijakan titik akhir VPC, lihat Mengontrol akses ke titik akhir VPC menggunakan kebijakan titik akhir di Panduan Pengguna Amazon VPC.

Kebijakan VPC endpoint default

Jika Anda tidak melampirkan kebijakan khusus saat membuat titik akhir, AWS lampirkan kebijakan default berikut. Kebijakan ini memungkinkan akses tak terbatas ke titik akhir.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*" } ] }

Untuk membatasi akses ke titik akhir, lampirkan kebijakan endpoint kustom.

Pertimbangan penting untuk AWS STS Kebijakan VPC endpoint

AWS STS menangani permintaan dari dua jenis penelepon yang berbeda secara fundamental. Kebijakan titik akhir VPC Anda harus memperhitungkan kedua jenis tersebut untuk menghindari pemblokiran permintaan yang sah secara tidak sengaja.

Prinsipal yang diautentikasi AWS

Pengguna IAM dan peran IAM yang menandatangani permintaan dengan AWS Signature Version 4 (SigV4). Penelepon ini memiliki kunci kondisi standar sepertiaws:PrincipalOrgID,aws:PrincipalAccount, dan aws:PrincipalArn tersedia dalam konteks permintaan.

Penelepon federasi

Prinsip SAFL 2.0 dan OpenID Connect (OIDC) yang memanggil atau. AssumeRoleWithSAML AssumeRoleWithWebIdentity Penelepon ini mengautentikasi dengan pernyataan SAMM atau Token Web JSON (JWT), bukan tanda tangan Sigv4. Karena mereka tidak memiliki AWS identitas pada saat permintaan, konteks permintaan tidak menyertakan kunci kondisi berbasis prinsip sepertiaws:PrincipalOrgID,, aws:PrincipalAccount dan. aws:PrincipalArn

penting

Jika kebijakan titik akhir VPC Anda hanya mengandalkan aws:PrincipalOrgID untuk mengizinkan akses, federasi AssumeRoleWithSAML dan AssumeRoleWithWebIdentity panggilan secara implisit ditolak karena kunci kondisi tidak ada untuk non-prinsipal.AWS

Bagaimana AWS STS mengevaluasi kebijakan titik akhir VPC untuk penelepon federasi

Saat penelepon federasi memanggil AssumeRoleWithSAML atau AssumeRoleWithWebIdentity melalui titik akhir VPC, hal berikut ini berlaku:

  • Penelepon bukan AWS kepala sekolah. Kunci kondisi sepertiaws:PrincipalOrgID,aws:PrincipalAccount, dan tidak aws:PrincipalArn tersedia dalam konteks permintaan.

  • Penelepon federasi tidak memiliki kunci kondisi aws:PrincipalIsAWSService dalam konteks permintaan.

  • Peran yang diasumsikan adalah AWS sumber daya. Resource-based kunci kondisi seperti aws:ResourceOrgID dan aws:ResourceAccount tersedia dan merujuk ke peran target.

  • Kebijakan kepercayaan peran tetap menjadi gerbang otorisasi utama untuk akses federasi. Kebijakan titik akhir VPC menyediakan batas tingkat jaringan tambahan.

Sebaiknya gunakan aws:ResourceOrgID atau aws:ResourceAccount saat menulis pernyataan kebijakan titik akhir VPC yang harus diterapkan pada penelepon federasi, karena penelepon ini tidak memiliki kunci kondisi berbasis prinsip yang tersedia.

Kunci kondisi tersedia untuk AWS STS Kebijakan VPC endpoint

Tabel berikut menunjukkan kunci kondisi yang umum digunakan dan ketersediaannya dalam konteks permintaan untuk setiap jenis pemanggil saat membuat permintaan melalui titik akhir AWS STS VPC. Kunci kondisi tambahan tersedia di luar yang tercantum di sini.

Ketersediaan kunci kondisi menurut jenis penelepon

Kunci syarat

Prinsipal yang diautentikasi AWS

Penelepon federasi

Deskripsi

aws:PrincipalOrgID

Ya

Tidak

ID organisasi dari kepala panggilan

aws:PrincipalAccount

Ya

Tidak

ID akun dari kepala sekolah yang menelepon

aws:PrincipalArn

Ya

Tidak

ARN dari kepala sekolah panggilan

aws:PrincipalIsAWSService

Ya (mengevaluasi ke false)

Tidak (kunci tidak ada)

Apakah penelepon adalah kepala AWS layanan

aws:ResourceOrgID

Ya

Ya

ID organisasi akun yang memiliki sumber daya yang diminta

aws:ResourceAccount

Ya

Ya

ID akun yang memiliki sumber daya yang diminta

catatan

Untuk AWS prinsipal yang diautentikasi (pengguna dan peran IAM), aws:PrincipalIsAWSService hadir dalam konteks permintaan dan mengevaluasi ke false. Untuk penelepon federasi, kunci ini tidak ada dalam konteks permintaan sepenuhnya. Kondisi yang memeriksa "Bool": {"aws:PrincipalIsAWSService": "false"} tidak cocok dengan penelepon federasi karena kuncinya tidak ada.

Contoh: Izinkan semua AWS STS tindakan untuk organisasi Anda

Kebijakan endpoint berikut membatasi titik akhir AWS STS VPC Anda ke organisasi Anda sambil mendukung akses federasi. Ini memungkinkan semua AWS STS tindakan untuk prinsipal yang diautentikasi di organisasi Anda dan secara terpisah mengizinkan penelepon federasi untuk mengambil peran dalam organisasi Anda. Pemanggil federasi (AssumeRoleWithSAMLdanAssumeRoleWithWebIdentity) memerlukan pernyataan terpisah karena mereka tidak memiliki aws:PrincipalOrgID dalam konteks permintaan.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOrganizationPrincipals", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sts:*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-exampleorgid" } } }, { "Sid": "AllowFederatedAssumeRole", "Effect": "Allow", "Principal": "*", "Action": [ "sts:AssumeRoleWithSAML", "sts:AssumeRoleWithWebIdentity" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceOrgID": "o-exampleorgid" } } } ] }

Pernyataan pertama menggunakan "Principal": {"AWS": "*"} with aws:PrincipalOrgID untuk mengizinkan AWS prinsipal yang diautentikasi dari organisasi Anda. Pernyataan kedua digunakan "Principal": "*" untuk mencocokkan penelepon federasi dan membatasi peran target untuk organisasi Anda menggunakan. aws:ResourceOrgID Kebijakan kepercayaan peran tetap menjadi kontrol utama di mana identitas federasi dapat mengambil peran mana.

Untuk informasi selengkapnya tentang penerapan kontrol perimeter jaringan, lihat Membangun perimeter data AWS dan contoh kebijakan perimeter data di GitHub situs web.

Contoh: Izinkan semua AWS STS tindakan untuk akun tertentu

Kebijakan endpoint berikut memungkinkan semua AWS STS tindakan untuk prinsipal di akun tertentu. Gunakan kebijakan ini jika akun Anda bukan bagian dari organisasi. Penelepon federasi diizinkan dalam pernyataan terpisah karena mereka tidak memiliki aws:PrincipalAccount dalam konteks permintaan.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSpecificAccountPrincipals", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sts:*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalAccount": [ "111122223333", "444455556666" ] } } }, { "Sid": "AllowFederatedAssumeRole", "Effect": "Allow", "Principal": "*", "Action": [ "sts:AssumeRoleWithSAML", "sts:AssumeRoleWithWebIdentity" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": [ "111122223333", "444455556666" ] } } } ] }

Pernyataan pertama menggunakan "Principal": {"AWS": "*"} with aws:PrincipalAccount untuk mengizinkan AWS prinsipal yang diautentikasi dari akun yang ditentukan. Pernyataan kedua digunakan "Principal": "*" untuk mencocokkan penelepon federasi dan membatasi peran target ke akun yang sama menggunakan. aws:ResourceAccount Kebijakan kepercayaan peran tetap menjadi kontrol utama di mana identitas federasi dapat mengambil peran mana.

Contoh: Batasi untuk spesifik AWS STS tindakan

Kebijakan endpoint berikut hanya memungkinkan AssumeRole untuk prinsipal yang diautentikasi dan AssumeRoleWithSAML untuk penelepon federasi, keduanya mencakup peran dalam organisasi Anda.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeRoleByOrgPrincipals", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sts:AssumeRole", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-exampleorgid" } } }, { "Sid": "AllowSAMLFederation", "Effect": "Allow", "Principal": "*", "Action": "sts:AssumeRoleWithSAML", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceOrgID": "o-exampleorgid" } } } ] }

Kebijakan ini memblokir AWS STS tindakan lain sepertiGetCallerIdentity,GetSessionToken, dan AssumeRoleWithWebIdentity melalui titik akhir ini. Sesuaikan Action elemen agar sesuai dengan kebutuhan Anda.

Contoh: Tolak akses non-organisasi sambil mengizinkan federasi

Kebijakan endpoint berikut menggunakan penolakan eksplisit untuk memblokir prinsipal yang diautentikasi di luar organisasi Anda, sambil mempertahankan akses untuk penelepon federasi. Pendekatan ini dimulai dengan izin yang luas dan menambahkan pernyataan penolakan yang ditargetkan.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAll", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*" }, { "Sid": "DenyNonOrgPrincipals", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "sts:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:PrincipalOrgID": "o-exampleorgid" } } } ] }

Pernyataan penolakan menggunakan"Principal": {"AWS": "*"}, yang mencakupnya ke AWS prinsip yang diautentikasi saja. Penelepon federasi (SALL dan OIDC) bukan AWS prinsipal dan tidak cocok dengan Principal elemen ini, sehingga penolakan tidak berlaku untuk mereka. Pendekatan ini menghindari kebutuhan akan kompleks Null atau Bool kondisi untuk mengukir pengecualian bagi penelepon federasi.

catatan

Pernyataan pertama memungkinkan semua tindakan untuk semua kepala sekolah. Penyangkalan dalam pernyataan kedua diutamakan untuk AWS prinsipal yang diautentikasi di luar organisasi Anda. Penelepon federasi diizinkan oleh pernyataan pertama dan tidak terpengaruh oleh penolakan karena Principal elemen dalam pernyataan penolakan tidak cocok dengan mereka.