Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Perlindungan data di Amazon Cognito
Model tanggung jawab AWS bersama model berlaku untuk perlindungan data di Amazon Cognito (Amazon Cognito). Seperti yang dijelaskan dalam model AWS ini, bertanggung jawab untuk melindungi infrastruktur global yang menjalankan semua AWS Cloud. Anda bertanggung jawab untuk mempertahankan kendali atas konten yang di-host pada infrastruktur ini. Konten ini mencakup konfigurasi keamanan dan tugas manajemen untuk AWS layanan yang Anda gunakan. Untuk informasi selengkapnya tentang privasi data, silakan lihat Pertanyaan Umum Privasi Data.
Untuk tujuan perlindungan data, kami menyarankan Anda melindungi kredensi AWS akun dan menyiapkan akun pengguna individu dengan AWS Identity and Access Management (IAM). Dengan cara ini, setiap pengguna hanya diberi izin yang diperlukan untuk memenuhi tanggung jawab tugas mereka. Kami juga merekomendasikan agar Anda mengamankan data Anda dengan cara-cara berikut ini:
-
Gunakan autentikasi multi-faktor (MFA) pada setiap akun.
-
Gunakan SSL/TLS untuk berkomunikasi dengan AWS sumber daya.
-
Siapkan API dan pencatatan aktivitas pengguna dengan AWS CloudTrail.
-
Gunakan solusi AWS enkripsi, bersama dengan semua kontrol keamanan default dalam AWS
layanan.
-
Gunakan layanan keamanan terkelola lanjutan seperti Amazon Macie, yang membantu menemukan dan mengamankan data pribadi yang disimpan di Amazon S3.
Sebaiknya jangan pernah memasukkan informasi identitas yang sensitif, seperti nomor rekening pelanggan Anda, ke dalam bidang isian bebas seperti bidang Nama. Ini termasuk saat Anda bekerja dengan Amazon Cognito atau AWS
layanan lain menggunakan konsol, API AWS CLI, atau AWS SDK. Setiap data yang Anda masukkan ke dalam Amazon Cognito atau layanan lain mungkin akan diambil untuk disertakan dalam log diagnostik. Saat Anda memberikan URL ke server eksternal, jangan menyertakan informasi kredensial dalam URL untuk memvalidasi permintaan Anda ke server tersebut.
Enkripsi data
Enkripsi data biasanya terbagi dalam dua kategori: enkripsi saat diam dan enkripsi dalam transit.
Enkripsi saat diam
Data dalam kumpulan pengguna Amazon Cognito dan kumpulan identitas dienkripsi saat istirahat sesuai dengan standar industri.
- AWS kunci yang dimiliki
-
Amazon Cognito mengenkripsi data di kumpulan pengguna atau kumpulan identitas Anda dengan kunci KMS yang AWS dimiliki. Kunci jenis ini tidak terlihat di AWS KMS.
- Kunci yang dikelola pelanggan
-
Amazon Cognito mengenkripsi data di kumpulan pengguna Anda dengan kunci yang dikelola pelanggan. Anda memiliki administrasi kebijakan kunci yang dikelola pelanggan, rotasi, dan penghapusan terjadwal.
Enkripsi dengan kunci yang dikelola pelanggan mungkin tidak tersedia di beberapa kumpulan pengguna. Newly-created kumpulan pengguna selalu memiliki bentuk enkripsi yang tersedia bagi mereka.
Hal-hal yang perlu diketahui tentang enkripsi kumpulan pengguna dengan kunci yang dikelola pelanggan
-
Semua data pelanggan di kumpulan pengguna dienkripsi saat istirahat, bahkan jika Anda tidak mengambil tindakan untuk mengonfigurasi pengaturan enkripsi.
-
Amazon Cognito hanya mendukung kunci KMS simetris yang Wilayah AWS sama dengan kumpulan pengguna Anda untuk enkripsi kumpulan pengguna saat istirahat. Anda tidak dapat mengonfigurasi enkripsi kumpulan pengguna saat istirahat dengan kunci asimetris. Anda dapat mengonfigurasi enkripsi saat istirahat dengan kunci Wilayah tunggal dan dengan kunci Multi-wilayah yang berada di Wilayah yang sama dengan kumpulan pengguna Anda.
-
Anda dapat mengonfigurasi enkripsi kumpulan pengguna hanya dengan ARN kunci KMS, bukan alias.
Enkripsi PII
Amazon Cognito mendukung kerahasiaan, integritas, dan ketersediaan informasi identitas pribadi (PII) dalam pencarian atribut pengguna dengan enkripsi yang dapat dicari. Fungsi Kode Otentikasi Hash-based Pesan (HMAC) ini, dioptimalkan kinerja untuk kumpulan data kumpulan pengguna, memetakan antara teks biasa dan nilai terenkripsi atribut pengguna. Amazon Cognito menghitung nilai HMAC dengan kunci KMS yang mengenkripsi kumpulan pengguna Anda. Perlindungan ini berlaku untuk atribut berikut:
-
sub
-
email
-
phone_number
-
given_name
-
family_name
-
name
-
username
-
preferred_username
-
cognito:user_status
Prosedur berikut mengonfigurasi enkripsi saat istirahat di kolam pengguna Anda. Untuk informasi selengkapnya tentang kebijakan kunci KMS yang mendelegasikan akses Layanan AWS seperti Amazon Cognito, lihat Izin untuk Amazon Cognito dalam kebijakan utama.
- Set customer managed key policy
-
Untuk menggunakan kunci yang dikelola pelanggan, kunci Anda harus mempercayai prinsipal layanan Amazon Cognito untuk melakukan operasi enkripsi dan dekripsi pada kunci tersebut. Konfigurasikan kebijakan kunci kunci KMS Anda seperti yang ditunjukkan pada contoh berikut. Prinsipal IAM yang menulis kebijakan ini harus memiliki akses tulis ke kunci KMS Anda, dengan kms:PutKeyPolicy izin.
{
"Id": "cognito-cmk-policy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Allow Amazon Cognito service access",
"Effect": "Allow",
"Principal": {
"Service": [
"cognito-idp.amazonaws.com",
"identitystore.amazonaws.com"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKeyWithoutPlainText"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"aws:SourceArn": [
"arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
]
},
"StringEquals": {
"aws:SourceAccount": [
"111122223333"
]
},
"StringLike": {
"kms:EncryptionContext:aws:cognito-idp:userpool-arn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
}
}
},
{
"Sid": "Allow Amazon Cognito service DescribeKey access",
"Effect": "Allow",
"Principal": {
"Service": [
"cognito-idp.amazonaws.com",
"identitystore.amazonaws.com"
]
},
"Action": [
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"aws:SourceArn": [
"arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
]
},
"StringEquals": {
"aws:SourceAccount": [
"111122223333"
]
}
}
},
{
"Sid": "Allow access through Amazon Cognito for all principals in account that are authorized to use Amazon Cognito",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": [
"cognito-idp.us-east-1.amazonaws.com"
]
}
}
},
{
"Sid": "Allow access through Amazon Cognito for all principals in account that are authorized to use Amazon Cognito",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKeyWithoutPlainText"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": [
"cognito-idp.us-east-1.amazonaws.com"
]
},
"StringLike": {
"kms:EncryptionContext:aws:cognito-idp:userpool-arn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
}
}
},
{
"Sid": "Allow administrators to manage the key",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}
]
}
- Set customer managed key policy with permissions for encryption of
exported logs
-
Terapkan kebijakan ini ke kunci KMS Anda ketika ekspor log telah dikonfigurasi. Kebijakan ini mengizinkan Amazon Cognito mengenkripsi log saat mengekspornya, dan layanan perantara untuk mendekripsi log sebelum menuliskannya ke grup log Log Anda. CloudWatch Konfigurasikan kebijakan kunci kunci KMS Anda seperti yang ditunjukkan pada contoh berikut. Prinsipal IAM yang menulis kebijakan ini harus memiliki akses tulis ke kunci KMS Anda, dengan kms:PutKeyPolicy izin.
{
"Id": "cognito-cmk-policy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Allow Amazon Cognito service access",
"Effect": "Allow",
"Principal": {
"Service": [
"cognito-idp.amazonaws.com",
"identitystore.amazonaws.com"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKeyWithoutPlainText"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"aws:SourceArn": [
"arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
]
},
"StringEquals": {
"aws:SourceAccount": [
"111122223333"
]
},
"StringLike": {
"kms:EncryptionContext:aws:cognito-idp:userpool-arn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
}
}
},
{
"Sid": "Allow Amazon Cognito service DescribeKey access",
"Effect": "Allow",
"Principal": {
"Service": [
"cognito-idp.amazonaws.com",
"identitystore.amazonaws.com"
]
},
"Action": [
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"aws:SourceArn": [
"arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
]
},
"StringEquals": {
"aws:SourceAccount": [
"111122223333"
]
}
}
},
{
"Sid": "Allow access through Amazon Cognito for all principals in account that are authorized to use Amazon Cognito",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": [
"cognito-idp.us-east-1.amazonaws.com"
]
}
}
},
{
"Sid": "Allow access through Amazon Cognito for all principals in account that are authorized to use Amazon Cognito",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKeyWithoutPlainText"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": [
"cognito-idp.us-east-1.amazonaws.com"
]
},
"StringLike": {
"kms:EncryptionContext:aws:cognito-idp:userpool-arn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
}
}
},
{
"Sid": "Allow Amazon Cognito service log delivery access",
"Effect": "Allow",
"Principal": {
"Service": [
"cognito-idp.amazonaws.com"
]
},
"Action": [
"kms:GenerateDataKey",
"kms:Encrypt"
],
"Resource": "*",
"Condition": {
"StringLike": {
"kms:EncryptionContext:SourceArn": "arn:aws:logs:us-east-1:111122223333:*"
}
}
},
{
"Sid": "Allow IngestionHub service log delivery access",
"Effect": "Allow",
"Principal": {
"Service": [
"delivery.logs.amazonaws.com"
]
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*",
"Condition": {
"StringLike": {
"kms:EncryptionContext:SourceArn": "arn:aws:logs:us-east-1:111122223333:*"
}
}
},
{
"Sid": "Allow administrators to manage the key",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}
]
}
- Configure encryption at rest in the console
-
Untuk mengonfigurasi enkripsi saat istirahat di kumpulan pengguna
-
Masuk ke Konsol Amazon Cognito. Anda mungkin diminta untuk kredensial AWS
Anda.
-
Pilih Kolam Pengguna.
-
Pilih kolam pengguna yang ada dari daftar, atau buat kolam pengguna.
-
Pilih menu Pengaturan dan arahkan ke tab Keamanan kumpulan pengguna. Temukan Enkripsi saat istirahat dan pilih Edit.
-
Di bawah Key type, pilih kunci AWS yang dimiliki atau Customer managed key.
-
Jika Anda memilih kunci yang AWS dimiliki, tidak diperlukan konfigurasi tambahan.
-
Jika Anda memilih kunci terkelola Pelanggan, masukkan ARN kunci KMS ke ARN kunci terkelola Pelanggan. Anda juga dapat memilih Buat AWS KMS kunci dan buka jendela baru di AWS KMS konsol untuk membuat kunci KMS baru.
-
Pilih Simpan perubahan.
- Configure encryption at rest with the API
-
Tetapkan konfigurasi kunci Anda dalam permintaan CreateUserPoolatau UpdateUserPoolAPI. Contoh sebagian badan permintaan berikut menetapkan kumpulan pengguna untuk menggunakan kunci terkelola pelanggan yang disediakan. Untuk permintaan contoh lengkap, lihat Contoh.
"KeyConfiguration": {
"KeyType": "CUSTOMER_MANAGED_KEY",
"KmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
},
Contoh sebagian badan permintaan berikut menetapkan kumpulan pengguna untuk menggunakan kunci yang AWS dimiliki.
"KeyConfiguration": {
"KeyType": "AWS_OWNED_KEY"
},
Jika DescribeUserPoolrespons Anda tidak menyertakan KeyConfiguration parameter, kumpulan pengguna Anda dikonfigurasi untuk mengenkripsi data saat istirahat dengan kunci yang AWS dimiliki.
Enkripsi saat bergerak
Sebagai layanan terkelola, Amazon Cognito dilindungi oleh keamanan jaringan AWS global. Untuk informasi tentang layanan AWS keamanan dan cara AWS melindungi infrastruktur, lihat Keamanan AWS Cloud. Untuk mendesain AWS
lingkungan Anda menggunakan praktik terbaik untuk keamanan infrastruktur, lihat Perlindungan Infrastruktur dalam Kerangka Kerja yang AWS Diarsiteksikan dengan Baik Pilar Keamanan.
Anda menggunakan panggilan API yang AWS dipublikasikan untuk mengakses Amazon Cognito melalui jaringan. Klien harus mendukung hal-hal berikut:
-
Keamanan Lapisan Pengangkutan (TLS). Kami mensyaratkan TLS 1.2 dan menganjurkan TLS 1.3.
-
Cipher suite dengan perfect forward secrecy (PFS) seperti DHE (Ephemeral) atau ECDHE (Elliptic Curve Ephemeral Diffie-Hellman). Diffie-Hellman Sebagian besar sistem modern seperti Java 7 dan versi lebih baru mendukung mode-mode ini.
Kumpulan pengguna Amazon Cognito dan kumpulan identitas memiliki operasi API yang tidak diautentikasi IAM-authenticated, dan diotorisasi token. Beberapa adalah operasi tipe bidang kontrol untuk operasi administratif seperti mengonfigurasi domain kumpulan pengguna, dan lainnya adalah operasi tipe bidang data untuk otentikasi. Untuk informasi selengkapnya, lihat Daftar operasi API yang dikelompokkan berdasarkan model otorisasi. Semua kelas operasi Amazon Cognito API berbagi namespace— cognito-idp untuk kumpulan pengguna, untuk kumpulan identitas—dan titik cognito-identity akhir layanan. AWS titik akhir layanan memerlukan enkripsi dalam perjalanan dengan versi TLS minimum 1.2.
Pengguna Amazon Cognito mengumpulkan login terkelola host dan UI host klasik di domain web yang disajikan dari distribusi Amazon milik layanan. CloudFront Amazon Cognito mengelola pengaturan untuk enkripsi dalam perjalanan pada distribusi tersebut. Untuk informasi selengkapnya tentang pengaturan enkripsi untuk login terkelola, lihat versi TLS di bagian login terkelola.