View a markdown version of this page

Akses Amazon Cognito menggunakan titik akhir 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 titik akhir antarmuka (AWS PrivateLink)

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

Anda membuat koneksi pribadi ini dengan membuat titik akhir antarmuka, 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 permintaan 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 kredenSIAL klien OAuth 2.0

  2. Sign-in dengan login terkelola dan UI yang dihosting klasik.

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

Sumber daya Alur autentikasi Kebijakan dievaluasi saat klien melakukan transit titik akhir VPC Kebijakan dievaluasi ketika asal klien bersifat publik
Kolam pengguna Login terkelola & login 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 SDK dan REST API yang tidak diautentikasi RCP, kebijakan titik akhir VPC 3 RCP
Kolam pengguna Permintaan ter autentikasi SDK dan REST API SIGv4 RCP, kebijakan titik akhir VPC, kebijakan berbasis identitas 3 RCP, kebijakan berbasis identitas
Kolam identitas Permintaan SDK dan REST API yang tidak diautentikasi (alur dasar dan yang disempur nakan) RCP, kebijakan titik akhir VPC RCP
Kolam identitas Permintaan terautentikasi SDK dan REST API SIGv4 (alur yang diautentikasi pengembang) RCP, kebijakan berbasis identitas RCP, kebijakan berbasis identitas

1 Titik akhir VPC tidak menerima permintaan untuk domain kumpulan pengguna. Jika klien memiliki rute ke internet, NAT diterapkan, membuat asal menjadi 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 sepenuhnya pribadi
  1. Hapus domain

  2. Buat titik akhir VPC

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

Kolam pengguna Pribadi 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 cognito-identity kecuali dari VPC

Kolam identitas Pribadi dan publik
  1. Buat titik akhir VPC

Pertimbangan untuk Amazon Cognito

Sebelum Anda menyiapkan titik akhir antarmuka untuk Amazon Cognito, tinjau Per timbangan dalam AWS PrivateLink Panduan. 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.

Kumpulan 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 kumpulan pengguna server otorisasi OAuth 2.0 misalnya pemberian kredentif klien dan login terkelola.

API kum cognito-idp pulan pengguna memiliki operasi API yang tidak diautentikasi, diautentikasi, dan diberi otorisasi 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 otorisasi token, tidak seperti dalam kebijakan berbasis identitas. Jenis kebijakan titik akhir dan kontrol sumber daya 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. Alur kerja OpenID Connect (OIDC) dan OAuth 2.0 yang menggunakan titik akhir domain, misalnya mesin- ke-mesin (M2M), login federasi, dan pemberian kode otorisasi, tidak dapat diakses melalui titik akhir VPC. Titik akhir pengalihan dan otorisasi 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 di 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 SDK-based pengguna ke titik akhir cognito-idp layanan menerima permintaan melalui AWS PrivateLink, dengan peng CreateUserPoolDomain ecualian. 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 ACL AWS WAF web.

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 (RCP). Anda juga dapat menerapkan batasan untuk 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 pada tindakan mereka.

Operasi yang tidak diautentikasi

Operasi Amazon Cognito untuk aplikasi sisi klien tidak diautentikasi dengan SIGv4. Contoh operasi ada dalam kebijakan contoh diMembuat kebijakan titik akhir untuk titik akhir antarmuka Anda. Contoh tambahan dari operasi yang tidak diautentikasi adalah GetUser dan. AssociateSoftwareToken Saat Anda menambahkan operasi ini ke kebijakan berbasis identitas, operasi tersebut tidak berpengaruh. Namun, Anda dapat mengizinkan atau membatasi akses ke tindakan ini di kebijakan titik akhir VPC dan RCP.

Operasi yang tidak diautentikasi tidak terkait dengan prinsipal IAM. Kebijakan titik akhir VPC atau RCP Anda harus mengizinkan semua prinsipal 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 prinsipal dengan kebijakan titik akhir yang Anda terapkan ke titik akhir VPC, kebijakan kontrol sumber daya di organisasi Anda, dan kebijakan berbasis identitas yang Anda terapkan ke kepala sekolah. Identity-based dan kebijakan kontrol sumber daya menggunakan kunci kondisi berbasis jaringan seperti dan. VPC-aware 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

Kumpulan 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. Kumpulan identitas tidak memiliki titik akhir domain dan tidak tunduk pada batasan yang sama. Namun, kumpulan identitas memiliki pertimbangan khusus untuk kontrol akses berbasis jaringan karena integrasinya dengan AWS STS.

Keterbatasan konteks jaringan dengan AWS STS integrasi

Kumpulan identitas menggunakan AWS STS AssumeRoleWithWebIdentity operasi untuk memberikan AWS kredenSIAL sementara. Saat kumpulan identitas memang AWS STS gil AWS PrivateLink dalam alur otentikasi yang disempurnakan aws:SourceIpaws:SourceVpc, kunci konteks jaringan seperti,, 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 (RCP) 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 ubah kebijakan Anda untuk mengizinkan operasi ketika kepala sekolah 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 ditandai. 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" } } } ] }

Service-specific kunci konteks

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

Kunci konteks khusus layanan yang tersedia untuk operasi non-SIGv4 seperti GetId, GetCredentialsForIdentity, GetOpenIdToken, UnlinkIdentity
  • cognito-identity-unauth:IdentityPoolArn- Memfilter akses oleh kumpulan identitas ARN untuk pengguna yang tidak diautentikasi

  • cognito-identity-unauth:AccountId- Memfilter akses dengan 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 dengan Akun AWS ID untuk pengguna yang diautentikasi

Kunci konteks khusus layanan yang tersedia untuk operasi SIGv4 seperti DeleteIdentities and DescribeIdentity
  • cognito-identity:IdentityPoolArn- Memfilter akses oleh kumpulan 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 (RCP). Dengan kunci kondisi berbasis jaringan, RCP dapat menentukan jaringan dan tindakan yang diizinkan untuk AWS PrivateLink akses ke kumpulan pengguna dan kumpulan identitas Anda. Per Action nyataan di RCP dapat mengontrol akses ke operasi API kumpulan pengguna yang diautentikasi dan tidak diautentikasi.

Misalnya, kebijakan contoh 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 Amazon VPC 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.

Membuat kebijakan titik akhir untuk titik akhir antarmuka Anda

Kebijakan titik akhir adalah sumber daya IAM yang dapat Anda lampirkan ke titik akhir antarmuka. Kebijakan titik akhir 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 khusus 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 titik akhir khusus untuk kumpulan pengguna. Saat Anda melampirkan kebijakan ini ke titik akhir antarmuka, 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 titik akhir khusus 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 AWS PrivateLink operasi

Identity-basedkebijakan 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. IAM-authenticated 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 Tanda Tangan Versi 4. Untuk kumpulan pengguna, operasi yang diautentikasi mencakup permintaan otentikasi sisi server seperti AdminInitiateAuth dan permintaan administratif seperti. UpdateUserPool Untuk kumpulan identitas, operasi yang diautentikasi mencakup permintaan administratif seperti DeleteIdentities dan 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 otentikasi sisi server kumpulan pengguna

Kebijakan contoh 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

Kebijakan contoh berikut memberikan akses ke tindakan administratif kumpulan identitas dari titik akhir VPC yang ditentukan. Terapkan kebijakan ini ke prinsipal 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" } } } ] }