Akses Amazon Cognito menggunakan endpoint antarmuka ()AWS PrivateLink - Amazon Cognito

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

Akses Amazon Cognito menggunakan endpoint antarmuka ()AWS PrivateLink

Anda dapat menggunakan AWS PrivateLink untuk membuat koneksi pribadi antara VPC dan Amazon Cognito. Anda dapat mengakses Amazon Cognito seolah-olah ada di VPC Anda, tanpa menggunakan gateway internet, perangkat NAT, koneksi VPN, atau koneksi. Direct Connect Instans di VPC Anda tidak memerlukan alamat IP publik untuk mengakses Amazon Cognito.

Anda membuat koneksi pribadi ini dengan membuat titik akhir antarmuka, yang didukung oleh AWS PrivateLink. Kami membuat antarmuka jaringan endpoint di setiap subnet yang Anda aktifkan untuk titik akhir antarmuka. Ini adalah antarmuka jaringan yang dikelola pemohon yang berfungsi sebagai titik masuk untuk lalu lintas yang ditujukan untuk Amazon Cognito.

Untuk informasi selengkapnya, lihat Mengakses Layanan AWS melalui AWS PrivateLink di Panduan AWS PrivateLink .

penting

Jenis otentikasi berikut saat ini tidak didukung melalui AWS PrivateLink:

  1. Otorisasi mesin ke mesin (M2M) dengan aliran kredensional klien OAuth 2.0

  2. Masuk dengan login terkelola dan UI klasik yang dihosting.

Tabel berikut menjelaskan alur otentikasi yang tersedia untuk klien VPCs, dan kebijakan IAM yang dapat Anda terapkan untuk mengaturnya. Kebijakan yang dapat Anda evaluasi dalam permintaan ke kumpulan pengguna adalah kebijakan kontrol sumber daya (RCPs), kebijakan titik akhir VPC, dan kebijakan berbasis identitas.

Sumber daya Alur autentikasi Kebijakan dievaluasi saat klien transit titik akhir VPC Kebijakan dievaluasi ketika asal klien bersifat publik
Kolam pengguna Login terkelola & masuk UI yang dihosting klasik Tidak ada (tidak ada akses) 1 Tidak ada 2
Kolam pengguna Machine-to-machine otorisasi Tidak ada (tidak ada akses) 1 Tidak ada 2
Kolam pengguna Permintaan tidak diautentikasi SDK dan REST API RCPs, kebijakan titik akhir VPC 3 RCPs
Kolam pengguna Permintaan yang diautentikasi SDK dan REST API SiGv4 RCPs, Kebijakan titik akhir VPC, kebijakan berbasis identitas 3 RCPs, kebijakan berbasis identitas
Kolam identitas Permintaan tidak diautentikasi SDK dan REST API (alur dasar dan yang disempurnakan) RCPs, kebijakan titik akhir VPC RCPs
Kolam identitas Permintaan yang diautentikasi SDK dan REST API SiGv4 (alur yang diautentikasi oleh pengembang) RCPs, kebijakan berbasis identitas RCPs, kebijakan berbasis identitas

1 Titik akhir VPC tidak menerima permintaan untuk domain kumpulan pengguna. Jika klien memiliki rute ke internet, NAT diterapkan, membuat asal publik.

2 Keberadaan domain kumpulan pengguna mencegah penyelesaian permintaan kumpulan pengguna yang transit titik akhir VPC. Setiap klien dapat mengambil jalur angkutan umum hanya ke domain kumpulan pengguna dan titik akhir layanan API, membuat titik akhir VPC tidak dapat digunakan untuk kumpulan pengguna. Kumpulan pengguna dengan domain yang ditetapkan tidak kompatibel dengan. AWS PrivateLink

3 Kumpulan pengguna tidak boleh memiliki domain yang ditetapkan.

Contoh model implementasi berikut didukung dengan AWS PrivateLink dan Amazon Cognito.

Sumber daya Implementasi Tindakan
Kolam pengguna Aplikasi SDK atau REST API yang sepenuhnya pribadi
  1. Hapus domain

  2. Buat titik akhir VPC

  3. Konfigurasikan RCP ke Deny semua tindakan cognito-idp kecuali dari VPC

Kolam pengguna Swasta dan publik
  1. Hapus domain

  2. Buat titik akhir VPC

Kolam pengguna Server otorisasi OAuth 2.0 pribadi atau publik
  1. Tidak tersedia untuk VPC

Kolam identitas Sepenuhnya pribadi
  1. Buat titik akhir VPC

  2. Konfigurasikan RCP ke Deny semua tindakan kognito-identitas kecuali dari VPC

Kolam identitas Swasta dan publik
  1. Buat titik akhir VPC

Pertimbangan untuk Amazon Cognito

Sebelum Anda menyiapkan titik akhir antarmuka untuk Amazon Cognito, tinjau Pertimbangan dalam Panduan.AWS PrivateLink Amazon Cognito mendukung panggilan ke semua tindakan Amazon Cognito API melalui titik akhir antarmuka. Untuk informasi selengkapnya tentang operasi ini, lihat Referensi API kumpulan pengguna Amazon Cognito dan Referensi API Identitas Federasi Amazon Cognito.

AWS PrivateLink untuk Amazon Cognito hanya tersedia di Wilayah komersial AWS .

Kolam pengguna dan AWS PrivateLink

Anda dapat membuat permintaan ke semua operasi API kumpulan pengguna melalui titik akhir antarmuka, tetapi tidak untuk operasi yang diminta aplikasi Anda dari server otorisasi kumpulan pengguna OAuth 2.0 misalnya pemberian kredensi klien dan login terkelola.

API kumpulan cognito-idp pengguna memiliki operasi API yang tidak diautentikasi, diautentikasi, dan diotorisasi token. Anda dapat memberikan izin untuk operasi yang diautentikasi di titik akhir VPC dan kebijakan kontrol sumber daya. Anda juga dapat memberikan izin untuk operasi yang tidak diautentikasi dan diotorisasi token, tidak seperti kebijakan berbasis identitas. Jenis kebijakan endpoint dan resource control VPC dapat mengevaluasi dan menolak atau mengizinkan permintaan untuk operasi publik lainnya.

Permintaan ke titik akhir domain juga bersifat publik, tetapi Anda tidak dapat mengevaluasinya dalam kebijakan. DNS pribadi VPC tidak merutekan permintaan untuk domain kumpulan pengguna ke titik akhir VPC Anda. Anda hanya dapat membuat permintaan untuk layanan domain melalui jalur internet publik. Untuk informasi selengkapnya, lihat Pengaruh kebijakan pada operasi kumpulan pengguna.

Operasi yang didukung

Sistem dalam VPC dapat mengirim permintaan ke tindakan API kumpulan pengguna tetapi tidak ke titik akhir domain kumpulan pengguna. OpenID Connect (OIDC) dan alur kerja OAuth 2.0 yang menggunakan endpoint domain, misalnya machine-to-machine(M2M), sign-in federasi, dan hibah kode otorisasi, tidak dapat diakses melalui titik akhir VPC. Kebijakan titik akhir VPC tidak berpengaruh pada alur kerja HTTP ini dan tidak dapat memprosesnya. Permintaan ke titik akhir domain dari dalam VPC selalu gagal di titik akhir antarmuka, tetapi tetap tersedia melalui DNS publik dan perutean saat Anda menyiapkan titik akhir VPC untuk kumpulan pengguna Anda.

Untuk mencegah penetapan domain dari sistem dalam VPC, Amazon Cognito memblokir CreateUserPoolDomain permintaan di titik akhir antarmuka. Ini mencegah penambahan domain ke kumpulan pengguna Anda dari sistem yang ada di VPC. Untuk mencegah penambahan domain dari semua sistem, terapkan kebijakan kontrol sumber daya (RCP) seperti contoh berikut untuk Anda Akun AWS. Kebijakan ini memblokir CreateUserPoolDomain tindakan terhadap kumpulan pengguna yang ditentukan.

{ "Version": "2012-10-17", "Statement": [ { "Principal": "*", "Effect": "Deny", "Action": [ "cognito-idp:CreateUserPoolDomain" ], "Resource": "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE" } ] }

Kumpulan pengguna Anda mungkin memiliki domain, dan dalam semua kasus domain tersebut tidak tersedia. AWS PrivateLink Semua permintaan API kumpulan pengguna berbasis SDK ke titik akhir cognito-idp layanan menerima permintaan melalui AWS PrivateLink, dengan pengecualian. CreateUserPoolDomain Titik akhir layanan API kumpulan pengguna dan titik akhir domain tetap selalu dapat diakses melalui jalur internet publik. Untuk mengatasi akses dari sumber publik, terapkan AWS WAF web ACLs.

Pengaruh kebijakan pada operasi kumpulan pengguna

Semua operasi API kumpulan pengguna, bahkan yang biasanya bersifat publik dan tidak diautentikasi, dapat dikontrol dalam kebijakan titik akhir VPC dan kebijakan kontrol sumber daya (). RCPs Anda juga dapat menerapkan pembatasan akses kumpulan pengguna dalam kebijakan berbasis identitas dengan kunci kondisi VPC. Hanya permintaan yang menyertakan informasi otentikasi dalam format SigV4 yang dapat dikontrol dalam kebijakan berbasis identitas. Login terkelola dan operasi UI yang dihosting klasik adalah kategori terpisah, dan tidak memenuhi syarat untuk transit VPC atau penerapan jenis kebijakan apa pun untuk tindakan mereka.

Operasi yang tidak diautentikasi

Operasi Amazon Cognito untuk aplikasi sisi klien tidak diautentikasi dengan SigV4. Contoh operasi ada dalam contoh kebijakan diBuat kebijakan titik akhir untuk titik akhir antarmuka Anda. Contoh tambahan dari operasi yang tidak diautentikasi adalah danGetUser. AssociateSoftwareToken Ketika Anda menambahkan operasi ini ke kebijakan berbasis identitas, mereka tidak berpengaruh. Namun, Anda dapat mengizinkan atau membatasi akses ke tindakan ini dalam kebijakan titik akhir VPC dan. RCPs

Operasi yang tidak diautentikasi tidak terkait dengan prinsipal IAM. Kebijakan titik akhir VPC atau RCP Anda harus mengizinkan semua prinsip untuk tindakan ini.

Operasi yang diautentikasi

Operasi API untuk administrasi kumpulan pengguna dan otentikasi sisi server diautentikasi dengan SigV4. Untuk operasi yang diautentikasi, Anda dapat membatasi prinsip dengan kebijakan titik akhir yang Anda terapkan pada titik akhir VPC, kebijakankontrol sumber daya di organisasi Anda, dan dalam kebijakan berbasis identitas yang Anda terapkan pada prinsipal. Kebijakan berbasis identitas dan kontrol sumber daya sadar VPC dengan kunci kondisi berbasis jaringan seperti dan. aws:SourceVpc aws:SourceVpce

Untuk informasi selengkapnya tentang kelas operasi API sisi server, sisi klien, dan administratif untuk kumpulan pengguna, lihat. Model otorisasi untuk otentikasi API dan SDK

Kolam identitas dan AWS PrivateLink

Kumpulan identitas Amazon Cognito mendukung semua operasi API melalui. AWS PrivateLink

Operasi yang didukung

Semua operasi API kumpulan identitas didukung melalui titik akhir antarmuka. Identity pool tidak memiliki endpoint domain dan tidak tunduk pada batasan yang sama. Namun, kumpulan identitas memiliki pertimbangan khusus untuk kontrol akses berbasis jaringan karena integrasinya dengan. AWS STS

Batasan konteks jaringan dengan AWS STS integrasi

Identity pool menggunakan AWS STS AssumeRoleWithWebIdentity operasi untuk menyediakan AWS kredensi sementara. Ketika kumpulan identitas memanggil AWS STS melalui AWS PrivateLink alur otentikasi yang disempurnakan, kunci konteks jaringan seperti aws:SourceIpaws:SourceVpc,, dan aws:SourceVpce berisi nilai dari infrastruktur layanan kumpulan identitas, bukan dari konteks jaringan aplikasi Anda.

Jika kebijakan kepercayaan peran IAM atau kebijakan kontrol sumber daya (RCPs) menggunakan kunci kondisi berbasis jaringan untuk membatasi akses, operasi kumpulan identitas mungkin ditolak secara tidak terduga. Untuk mengatasi batasan ini, Anda dapat menggunakan salah satu pendekatan berikut:

Tag utama untuk identifikasi layanan

Tandai peran IAM yang digunakan dengan kumpulan identitas dan modifikasi kebijakan Anda untuk mengizinkan operasi ketika prinsipal memiliki tag yang sesuai. Pertama, tambahkan tag ke peran kumpulan identitas Anda:

aws iam tag-role \ -\-role-name MyIdentityPoolRole \ -\-tags Key=CognitoServiceCall,Value=true

Kemudian ubah kebijakan berbasis jaringan Anda untuk mengizinkan prinsipal yang diberi tag. Misalnya, dalam RCP:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "sts:AssumeRoleWithWebIdentity", "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": ["allowed-ip-ranges"] }, "StringNotEqualsIfExists": { "aws:ResourceTag/CognitoServiceCall": "true" } } } ] }

Kunci konteks khusus layanan

Kumpulan identitas menyediakan kunci konteks khusus layanan untuk otorisasi tingkat sumber daya dalam kebijakan titik akhir VPC dan. RCPs Dengan kunci konteks ini, Anda dapat mengaktifkan kontrol akses berbutir halus dan membedakan antara pengguna yang diautentikasi dan tidak diautentikasi dalam kebijakan.

Kunci konteks khusus layanan yang tersedia untuk operasi non-SIGV4 seperti,,, GetIdGetCredentialsForIdentityGetOpenIdTokenUnlinkIdentity
  • cognito-identity-unauth:IdentityPoolArn- Memfilter akses oleh kumpulan identitas ARN untuk pengguna yang tidak diautentikasi

  • cognito-identity-unauth:AccountId- Memfilter akses oleh Akun AWS ID untuk pengguna yang tidak diautentikasi

  • cognito-identity-auth:IdentityPoolArn- Memfilter akses oleh kumpulan identitas ARN untuk pengguna yang diautentikasi

  • cognito-identity-auth:AccountId- Memfilter akses oleh Akun AWS ID untuk pengguna yang diautentikasi

Kunci konteks khusus layanan yang tersedia untuk operasi SiGv4 seperti dan DeleteIdentitiesDescribeIdentity
  • cognito-identity:IdentityPoolArn- Memfilter akses oleh kolam identitas ARN

Anda dapat menggunakan kunci konteks ini dalam kebijakan titik akhir VPC untuk membatasi akses berdasarkan status otentikasi, seperti yang ditunjukkan dalam contoh berikut:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "cognito-identity:GetId", "cognito-identity:GetCredentialsForIdentity" ], "Resource": "*", "Condition": { "StringEquals": { "cognito-identity-unauth:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456" } } } ] }

Mengontrol akses dengan kebijakan kontrol sumber daya

Amazon Cognito mendukung pengendalian akses ke sumber daya Anda dengan kebijakan kontrol sumber daya ()RCPs. Dengan kunci kondisi berbasis jaringan, RCPs dapat menentukan jaringan dan tindakan yang diizinkan untuk AWS PrivateLink akses ke kumpulan pengguna dan kumpulan identitas Anda. ActionPernyataan dalam RCPs dapat mengontrol akses ke operasi API kumpulan pengguna yang diautentikasi dan tidak diautentikasi.

Misalnya, contoh kebijakan berikut mencegah akses ke semua kumpulan pengguna dari VPC tertentu.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCognitoAccessOutsideVPC", "Effect": "Deny", "Principal": "*", "Action": "cognito-idp:*", "Resource": "*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-02d6770f46ef1653b" } } } ] }

Buat titik akhir antarmuka untuk Amazon Cognito

Anda dapat membuat titik akhir antarmuka untuk Amazon Cognito menggunakan konsol VPC Amazon atau (). AWS Command Line Interface AWS CLI Untuk informasi selengkapnya, lihat Membuat titik akhir antarmuka di AWS PrivateLink Panduan.

Buat titik akhir antarmuka untuk kumpulan pengguna Amazon Cognito menggunakan nama layanan berikut:

com.amazonaws.region.cognito-idp

Buat titik akhir antarmuka untuk kumpulan identitas Amazon Cognito menggunakan nama layanan berikut:

com.amazonaws.region.cognito-identity

Jika Anda mengaktifkan DNS pribadi untuk titik akhir antarmuka, Anda dapat membuat permintaan API ke Amazon Cognito menggunakan nama DNS Regional defaultnya. Misalnya, cognito-idp.us-east-1.amazonaws.com untuk kumpulan pengguna dan cognito-identity.us-east-1.amazonaws.com untuk kumpulan identitas.

Buat kebijakan titik akhir untuk titik akhir antarmuka Anda

Kebijakan endpoint adalah sumber daya IAM yang dapat Anda lampirkan ke titik akhir antarmuka. Kebijakan endpoint default memungkinkan akses penuh ke Amazon Cognito melalui titik akhir antarmuka. Untuk mengontrol akses yang diizinkan ke Amazon Cognito dari VPC Anda, lampirkan kebijakan titik akhir kustom ke titik akhir antarmuka.

kebijakan titik akhir mencantumkan informasi berikut:

  • Prinsipal yang dapat melakukan tindakan (Akun AWS, pengguna IAM, dan peran IAM).

  • Tindakan yang dapat dilakukan.

  • Sumber daya untuk melakukan tindakan.

  • Kondisi yang harus dipenuhi sebelum permintaan diizinkan atau ditolak.

Untuk informasi selengkapnya, lihat Mengontrol akses ke layanan menggunakan kebijakan titik akhir di Panduan AWS PrivateLink .

Contoh: Kebijakan titik akhir VPC untuk tindakan kumpulan pengguna

Berikut ini adalah contoh kebijakan endpoint kustom untuk kumpulan pengguna. Saat Anda melampirkan kebijakan ini ke titik akhir antarmuka Anda, kebijakan ini akan memberikan akses ke tindakan kumpulan pengguna yang terdaftar untuk semua prinsipal di semua sumber daya.

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": "arn:aws:iam::123456789012:assumed-role/MyWebAppRole/MyWebAppSession" }, "Effect": "Allow", "Action": [ "cognito-idp:AdminInitiateAuth", "cognito-idp:AdminRespondToAuthChallenge", "cognito-idp:AdminSetUserPassword" ], "Resource":"arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE" }, { "Effect": "Allow", "Action": [ "cognito-idp:InitiateAuth", "cognito-idp:RespondToAuthChallenge", "cognito-idp:ForgotPassword", "cognito-idp:ConfirmForgotPassword" ], "Resource":"arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE" } ] }
Contoh: Kebijakan titik akhir VPC untuk tindakan kumpulan identitas

Berikut ini adalah contoh kebijakan endpoint kustom untuk kumpulan identitas. Kebijakan ini menggunakan kunci konteks khusus layanan untuk membatasi akses ke pengguna yang diautentikasi dari kumpulan identitas tertentu.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "cognito-identity:GetId", "cognito-identity:GetCredentialsForIdentity", "cognito-identity:GetOpenIdToken" ], "Resource": "*", "Condition": { "StringEquals": { "cognito-identity-auth:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456" } } } ] }

Membuat kebijakan berbasis identitas untuk operasi AWS PrivateLink

Kebijakan berbasis identitas adalah sumber daya IAM yang dapat Anda lampirkan ke prinsipal. AWS Anda dapat mengontrol akses ke Amazon Cognito melalui titik akhir VPC dengan kebijakan berbasis identitas untuk operasi yang diautentikasi oleh IAM. Tidak seperti kebijakan titik akhir, Anda tidak dapat mengonfigurasi izin untuk operasi yang tidak diautentikasi dalam kebijakan berbasis identitas. Operasi yang diautentikasi, atau administratif, memerlukan otorisasi Signature Version 4. Untuk kumpulan pengguna, operasi yang diautentikasi mencakup permintaan otentikasi sisi server seperti dan permintaan administratif seperti AdminInitiateAuth. UpdateUserPool Untuk kumpulan identitas, operasi yang diautentikasi mencakup permintaan administratif seperti DeleteIdentitiesdan DescribeIdentity.

Kebijakan berbasis identitas menentukan informasi berikut:

  • Tindakan yang dapat dilakukan.

  • Sumber daya untuk melakukan tindakan.

  • Kondisi yang harus dipenuhi sebelum permintaan diizinkan atau ditolak.

Contoh: kebijakan berbasis identitas untuk autentikasi sisi server kumpulan pengguna

Contoh kebijakan berikut memberikan akses ke tindakan kumpulan pengguna yang terdaftar di kumpulan pengguna yang ditentukan, dari titik akhir yang ditentukan. Terapkan kebijakan ini ke peran IAM yang diasumsikan untuk aplikasi web Anda.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-idp:AdminInitiateAuth", "cognito-idp:AdminRespondToAuthChallenge", "cognito-idp:AdminSetUserPassword" ], "Resource": "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE", "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } } } ] }
Contoh: kebijakan berbasis identitas untuk operasi administratif kumpulan identitas

Contoh kebijakan berikut memberikan akses ke kumpulan identitas tindakan administratif dari titik akhir VPC yang ditentukan. Menerapkan kebijakan ini kepada kepala IAM yang perlu melakukan administrasi kumpulan identitas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-identity:DeleteIdentities", "cognito-identity:DescribeIdentity" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" }, "StringEquals": { "cognito-identity:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456" } } } ] }