Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Praktik terbaik keamanan untuk kumpulan identitas Amazon Cognito
Kumpulan identitas Amazon Cognito menyediakan AWS kredensil sementara untuk aplikasi Anda. Akun AWS sering berisi sumber daya yang dibutuhkan pengguna aplikasi Anda, dan sumber daya back-end pribadi. IAMPeran dan kebijakan yang membentuk AWS kredensil dapat memberikan akses ke salah satu sumber daya ini.
Praktik terbaik utama konfigurasi kumpulan identitas adalah memastikan bahwa aplikasi Anda dapat menyelesaikan pekerjaan tanpa kelebihan atau hak istimewa yang tidak diinginkan. Untuk mencegah kesalahan konfigurasi keamanan, tinjau rekomendasi ini sebelum peluncuran setiap aplikasi yang ingin Anda rilis ke produksi.
IAMpraktik terbaik konfigurasi
Saat tamu atau pengguna yang diautentikasi memulai sesi di aplikasi Anda yang memerlukan kredensil kumpulan identitas, aplikasi Anda akan mengambil kredensi sementara AWS untuk suatu peran. IAM Kredensialnya mungkin untuk peran default, peran yang dipilih berdasarkan aturan dalam konfigurasi kumpulan identitas, atau untuk peran khusus yang dipilih oleh aplikasi Anda. Dengan izin yang ditetapkan untuk setiap peran, pengguna Anda mendapatkan akses ke AWS sumber daya Anda.
Untuk informasi selengkapnya tentang praktik IAM terbaik umum, lihat praktik IAM terbaik di Panduan AWS Identity and Access Management Pengguna.
Gunakan kondisi kebijakan kepercayaan dalam IAM peran
IAMmensyaratkan bahwa peran untuk kumpulan identitas memiliki setidaknya satu kondisi kebijakan kepercayaan. Kondisi ini dapat, misalnya, mengatur cakupan peran ke pengguna yang diautentikasi saja. AWS STS juga mensyaratkan bahwa permintaan otentikasi dasar lintas akun memiliki dua kondisi khusus: cognito-identity.amazonaws.com:aud
dan. cognito-identity.amazonaws.com:amr
Sebagai praktik terbaik, terapkan kedua kondisi ini di semua IAM peran yang mempercayai prinsip layanan kumpulan identitascognito-identity.amazonaws.com
.
-
cognito-identity.amazonaws.com:aud
: Klaim aud dalam token kumpulan identitas harus cocok dengan ID kumpulan identitas tepercaya. -
cognito-identity.amazonaws.com:amr
: Klaim amr dalam token kumpulan identitas harus diautentikasi atau tidak diautentikasi. Dengan kondisi ini, Anda dapat memesan akses ke peran hanya untuk tamu yang tidak diautentikasi, atau hanya untuk pengguna yang diautentikasi. Anda dapat menyempurnakan nilai kondisi ini lebih lanjut untuk membatasi peran kepada pengguna dari penyedia tertentu, misalnya.graph.facebook.com
Contoh kebijakan kepercayaan peran berikut memberikan akses ke peran dalam kondisi berikut:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }
Elemen yang berhubungan dengan kumpulan identitas
-
"Federated": "cognito-identity.amazonaws.com"
: Pengguna harus berasal dari kumpulan identitas. -
"cognito-identity.amazonaws.com:aud": "us-east-1:a1b2c3d4-5678-90ab-cdef-example11111"
: Pengguna harus berasal dari kumpulan identitas tertentuus-east-1:a1b2c3d4-5678-90ab-cdef-example11111
. -
"cognito-identity.amazonaws.com:amr": "authenticated"
: Pengguna harus diautentikasi. Pengguna tamu tidak dapat mengambil peran tersebut.
Terapkan izin hak istimewa paling sedikit
Saat Anda menetapkan izin dengan IAM kebijakan untuk akses terautentikasi atau akses tamu, berikan hanya izin khusus yang diperlukan untuk melakukan tugas tertentu, atau paling tidak izin hak istimewa. IAMKebijakan contoh berikut, bila diterapkan ke peran, memberikan akses hanya-baca ke satu file gambar di bucket Amazon S3.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket/assets/my_picture.jpg"] } ] }
Praktik terbaik konfigurasi kumpulan identitas
Identity pool memiliki opsi fleksibel untuk menghasilkan AWS kredensi. Jangan mengambil pintasan desain ketika aplikasi Anda dapat bekerja dengan metode yang paling aman.
Memahami efek akses tamu
Akses tamu yang tidak diautentikasi memungkinkan pengguna untuk mengambil data dari Anda Akun AWS sebelum mereka masuk. Siapa pun yang mengetahui ID kumpulan identitas Anda dapat meminta kredensil yang tidak diautentikasi. ID kumpulan identitas Anda bukanlah informasi rahasia. Saat Anda mengaktifkan akses tamu, AWS izin yang Anda berikan untuk sesi yang tidak diautentikasi tersedia untuk semua orang.
Sebagai praktik terbaik, biarkan akses tamu dinonaktifkan dan ambil sumber daya yang diperlukan hanya setelah pengguna mengautentikasi. Jika aplikasi Anda memerlukan akses ke sumber daya sebelum masuk, lakukan tindakan pencegahan berikut.
-
Biasakan diri Anda dengan batasan otomatis yang ditempatkan pada peran yang tidak diautentikasi.
-
Pantau dan sesuaikan izin IAM peran Anda yang tidak diautentikasi agar sesuai dengan kebutuhan spesifik aplikasi Anda.
-
Berikan akses ke sumber daya tertentu.
-
Amankan kebijakan kepercayaan peran default yang tidak diautentikasi. IAM
-
Aktifkan akses tamu hanya jika Anda yakin bahwa Anda akan memberikan izin dalam IAM peran Anda kepada siapa pun di internet.
Gunakan otentikasi yang disempurnakan secara default
Dengan autentikasi dasar (klasik), Amazon Cognito mendelegasikan pemilihan peran IAM ke aplikasi Anda. Sebaliknya, aliran yang ditingkatkan menggunakan logika terpusat di kumpulan identitas Anda untuk menentukan IAM peran. Ini juga menyediakan keamanan tambahan untuk identitas yang tidak diautentikasi dengan kebijakan cakupan bawah yang menetapkan batas atas izin. IAM Aliran yang ditingkatkan adalah pilihan paling aman dengan tingkat upaya pengembang terendah. Untuk mempelajari lebih lanjut tentang opsi ini, lihatAliran otentikasi kumpulan identitas.
Alur dasar dapat mengekspos logika sisi klien yang masuk ke pemilihan peran dan perakitan AWS STS API permintaan kredensil. Alur yang disempurnakan menyembunyikan logika dan permintaan peran asumsi di balik otomatisasi kumpulan identitas.
Saat Anda mengonfigurasi otentikasi dasar, terapkan praktik IAM terbaik pada IAM peran dan izinnya.
Gunakan penyedia pengembang dengan aman
Identitas otentikasi pengembang adalah fitur kumpulan identitas untuk aplikasi sisi server. Satu-satunya bukti otentikasi yang diperlukan kumpulan identitas untuk otentikasi pengembang adalah AWS kredensil pengembang kumpulan identitas. Kumpulan identitas tidak memberlakukan batasan apa pun pada validitas pengidentifikasi penyedia pengembang yang Anda tampilkan dalam alur autentikasi ini.
Sebagai praktik terbaik, hanya menerapkan penyedia pengembang dalam kondisi berikut:
-
Untuk membuat akuntabilitas atas penggunaan kredensil yang diautentikasi pengembang, rancang nama dan pengidentifikasi penyedia pengembang Anda untuk menunjukkan sumber otentikasi. Sebagai contoh:
"Logins" : {"MyCorp provider" : "
.[provider application ID]
"} -
Hindari kredensil pengguna yang berumur panjang. Konfigurasikan klien sisi server Anda untuk meminta identitas dengan peran terkait layanan seperti EC2profil instance dan peran eksekusi Lambda.
-
Hindari pencampuran sumber kepercayaan internal dan eksternal dalam kumpulan identitas yang sama. Tambahkan penyedia pengembang dan penyedia single sign-on (SSO) Anda di kumpulan identitas terpisah.