Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
APIAkses aman dengan MFA
Dengan IAM kebijakan, Anda dapat menentukan API operasi mana yang diizinkan untuk dipanggil oleh pengguna. Anda dapat menerapkan keamanan tambahan dengan mengharuskan pengguna untuk mengautentikasi dengan otentikasi multi-faktor (MFA) sebelum Anda mengizinkan mereka melakukan tindakan yang sangat sensitif.
Misalnya, Anda mungkin memiliki kebijakan yang memungkinkan pengguna menjalankan Amazon EC2 RunInstances
DescribeInstances
, dan StopInstances
tindakan. Tetapi Anda mungkin ingin membatasi tindakan destruktif seperti TerminateInstances
dan memastikan bahwa pengguna dapat melakukan tindakan itu hanya jika mereka mengautentikasi dengan perangkat. AWS MFA
Topik
Gambaran Umum
Menambahkan MFA perlindungan ke API operasi melibatkan tugas-tugas ini:
-
Administrator mengonfigurasi AWS MFA perangkat untuk setiap pengguna yang harus membuat API permintaan yang memerlukan MFA otentikasi. Untuk informasi selengkapnya, lihat AWS Otentikasi multi-faktor di IAM.
-
Administrator membuat kebijakan untuk pengguna yang menyertakan
Condition
elemen yang memeriksa apakah pengguna diautentikasi dengan AWS MFA perangkat. -
Pengguna memanggil salah satu AWS STS API operasi yang mendukung MFA parameter: AssumeRoleatau GetSessionToken. Sebagai bagian dari panggilan, pengguna mencakup pengidentifikasi perangkat untuk perangkat yang terhubung dengan pengguna. Pengguna juga menyertakan kata sandi satu kali berbasis waktu (TOTP) yang dihasilkan perangkat. Dalam kasus lain, pengguna mendapatkan kembali kredensial keamanan sementara yang dapat digunakan pengguna untuk membuat permintaan tambahan ke AWS.
catatan
MFAperlindungan untuk API operasi layanan hanya tersedia jika layanan mendukung kredensil keamanan sementara. Untuk daftar layanan ini, lihat Menggunakan Kredensial IT Sementara untuk Mengakses AWS.
Jika otorisasi gagal, AWS mengembalikan pesan kesalahan akses ditolak (seperti halnya untuk akses yang tidak sah). Dengan API kebijakan MFA yang dilindungi, AWS menolak akses ke API operasi yang ditentukan dalam kebijakan jika pengguna mencoba memanggil API operasi tanpa otentikasi yang validMFA. Operasi juga ditolak jika cap waktu permintaan untuk API operasi berada di luar rentang yang diizinkan yang ditentukan dalam kebijakan. Pengguna harus diautentikasi ulang MFA dengan meminta kredensil keamanan sementara baru dengan MFA kode dan nomor seri perangkat.
IAMkebijakan dengan MFA kondisi
Kebijakan dengan MFA ketentuan dapat dilampirkan sebagai berikut:
-
Pengguna atau grup IAM
-
Sumber daya seperti bucket Amazon S3, SQS antrian Amazon, atau topik Amazon SNS
-
Kebijakan kepercayaan dari IAM peran yang dapat diasumsikan oleh pengguna
Anda dapat menggunakan MFA kondisi dalam kebijakan untuk memeriksa properti berikut:
-
Keberadaan — Untuk hanya memverifikasi bahwa pengguna melakukan otentikasi denganMFA, periksa apakah
aws:MultiFactorAuthPresent
kunci dalam kondisi.True
Bool
Kunci tersebut hanya muncul ketika pengguna mengautentikasi dengan kredensial jangka pendek. Kredensial jangka panjang, seperti access key, tidak mencakup kunci ini. -
Durasi—Jika Anda ingin memberikan akses hanya dalam waktu tertentu setelah MFA otentikasi, gunakan tipe kondisi numerik untuk membandingkan usia
aws:MultiFactorAuthAge
kunci dengan nilai (seperti 3600 detik). Perhatikan bahwaaws:MultiFactorAuthAge
kunci tidak MFA ada jika tidak digunakan.
Contoh berikut menunjukkan kebijakan kepercayaan IAM peran yang mencakup MFA kondisi untuk menguji keberadaan MFA otentikasi. Dengan kebijakan ini, pengguna dari Principal
elemen yang Akun AWS ditentukan (ganti ACCOUNT-B-ID
dengan Akun AWS ID yang valid) dapat mengambil peran yang dilampirkan kebijakan ini. Namun pengguna tersebut hanya dapat mengambil peran jika pengguna diautentikasi menggunakanMFA.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "
ACCOUNT-B-ID
"}, "Action": "sts:AssumeRole", "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} } }
Untuk informasi lebih lanjut tentang jenis kondisi untukMFA, lihatAWS Kunci konteks kondisi,Operator ketentuan numerik, danOperator ketentuan memeriksa keberadaan kunci kondisi .
Memilih antara GetSessionToken dan AssumeRole
AWS STS menyediakan dua API operasi yang memungkinkan pengguna meneruskan MFA informasi: GetSessionToken
danAssumeRole
. APIOperasi yang dipanggil pengguna untuk mendapatkan kredensil keamanan sementara tergantung pada skenario berikut yang berlaku.
Gunakan GetSessionToken
untuk skenario berikut:
-
APIOperasi panggilan yang mengakses sumber daya Akun AWS sama dengan IAM pengguna yang membuat permintaan. Perhatikan bahwa kredensil sementara dari
GetSessionToken
permintaan dapat mengakses IAM dan AWS STS API beroperasi hanya jika Anda menyertakan MFA informasi dalam permintaan kredensil. Karena kredensil sementara yang dikembalikan olehGetSessionToken
menyertakan MFA informasi, Anda dapat memeriksa MFA dalam API operasi individual yang dibuat oleh kredensialnya. -
Akses ke sumber daya yang dilindungi dengan kebijakan berbasis sumber daya yang mencakup suatu kondisi. MFA
Tujuan dari GetSessionToken
operasi ini adalah untuk mengotentikasi pengguna menggunakanMFA. Anda tidak dapat menggunakan kebijakan untuk mengontrol operasi autentikasi.
Gunakan AssumeRole
untuk skenario berikut:
-
APIOperasi panggilan yang mengakses sumber daya dalam hal yang sama atau berbeda Akun AWS. APIPanggilan dapat mencakup salah satu IAM atau AWS STS API. Perhatikan bahwa untuk melindungi akses, Anda menerapkan MFA pada saat pengguna mengambil peran tersebut. Kredensi sementara yang dikembalikan oleh
AssumeRole
tidak menyertakan MFA informasi dalam konteks, sehingga Anda tidak dapat memeriksa API operasi individu untuk. MFA Inilah mengapa Anda harus menggunakanGetSessionToken
untuk membatasi akses ke sumber daya yang dilindungi oleh kebijakan berbasis sumber daya.
Perincian tentang cara menerapkan skenario ini akan dijelaskan nanti dalam dokumen ini.
Poin penting tentang MFA akses yang dilindungi API
Penting untuk memahami aspek-aspek MFA perlindungan berikut untuk API operasi:
-
MFAperlindungan hanya tersedia dengan kredensil keamanan sementara, yang harus diperoleh dengan
AssumeRole
atau.GetSessionToken
-
Anda tidak dapat menggunakan API akses MFA yang dilindungi dengan Pengguna root akun AWS kredensil.
-
Anda tidak dapat menggunakan API akses MFA yang dilindungi dengan kunci keamanan U2F.
-
Pengguna federasi tidak dapat diberikan MFA perangkat untuk digunakan dengan AWS layanan, sehingga mereka tidak dapat mengakses AWS sumber daya yang dikendalikan olehMFA. (Lihat poin berikutnya.)
-
AWS STS APIOperasi lain yang mengembalikan kredensi sementara tidak mendukung. MFA Untuk
AssumeRoleWithWebIdentity
danAssumeRoleWithSAML
, pengguna diautentikasi oleh penyedia eksternal dan AWS tidak dapat menentukan apakah penyedia itu diperlukanMFA. SebabGetFederationToken
, MFA belum tentu terkait dengan pengguna tertentu. -
Demikian pula, kredensi jangka panjang (kunci akses IAM pengguna dan kunci akses pengguna root) tidak dapat digunakan dengan API akses MFA yang dilindungi karena tidak kedaluwarsa.
-
AssumeRole
dan jugaGetSessionToken
dapat dipanggil tanpa MFA informasi. Dalam hal ini, penelepon mendapatkan kembali kredensil keamanan sementara, tetapi informasi sesi untuk kredensil sementara tersebut tidak menunjukkan bahwa pengguna diautentikasi dengan. MFA -
Untuk menetapkan MFA perlindungan untuk API operasi, Anda menambahkan MFA kondisi ke kebijakan. Kebijakan harus menyertakan kunci
aws:MultiFactorAuthPresent
kondisi untuk menegakkan penggunaan. MFA Untuk pendelegasian lintas akun, kebijakan kepercayaan peran tersebut harus mencakup kunci ketentuan. -
Ketika Anda Akun AWS mengizinkan orang lain mengakses sumber daya di akun Anda, keamanan sumber daya Anda tergantung pada konfigurasi akun tepercaya (akun lain, bukan milik Anda). Hal ini tetap berlaku meskipun Anda memerlukan autentikasi multi-faktor. Identitas apa pun di akun tepercaya yang memiliki izin untuk membuat MFA perangkat virtual dapat membuat MFA klaim untuk memenuhi bagian dari kebijakan kepercayaan peran Anda. Sebelum Anda mengizinkan anggota akun lain mengakses AWS sumber daya Anda yang memerlukan otentikasi multi-faktor, Anda harus memastikan bahwa pemilik akun tepercaya mengikuti praktik terbaik keamanan. Misalnya, akun tepercaya harus membatasi akses ke API operasi sensitif, seperti API operasi MFA manajemen perangkat, ke identitas tertentu dan tepercaya.
-
Jika kebijakan menyertakan MFA kondisi, permintaan ditolak jika pengguna belum MFA diautentikasi, atau jika mereka memberikan pengenal MFA perangkat yang tidak valid atau tidak valid. TOTP
Skenario: MFA perlindungan untuk delegasi lintas akun
Dalam skenario ini, Anda ingin mendelegasikan akses ke IAM pengguna di akun lain, tetapi hanya jika pengguna diautentikasi dengan perangkat. AWS MFA (Untuk informasi lebih lanjut tentang pendelegasian lintas akun, lihat Istilah dan konsep peran.
Bayangkan Anda memiliki akun A (akun kepercayaan yang memiliki sumber daya untuk diakses), dengan IAM pengguna Anaya, yang memiliki izin administrator. Dia ingin memberikan akses ke pengguna Richard di akun B (akun tepercaya), tetapi ingin memastikan bahwa Richard diautentikasi MFA sebelum dia mengambil peran.
-
Dalam akun kepercayaan A, Anaya membuat IAM peran bernama
CrossAccountRole
dan menetapkan prinsipal dalam kebijakan kepercayaan peran ke ID akun B. Kebijakan kepercayaan memberikan izin untuk tindakan tersebut. AWS STSAssumeRole
Anaya juga menambahkan MFA syarat pada kebijakan kepercayaan, seperti pada contoh berikut.{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "
ACCOUNT-B-ID
"}, "Action": "sts:AssumeRole", "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} } } -
Anaya menambahkan kebijakan izin untuk peran yang menentukan apa yang dapat dilakukan peran tersebut. Kebijakan izin untuk peran dengan MFA perlindungan tidak berbeda dengan kebijakan izin peran lainnya. Contoh berikut menunjukkan kebijakan yang ditambahkan Anaya ke peran; ini memungkinkan pengguna yang berasumsi untuk melakukan tindakan Amazon DynamoDB apa pun pada
Books
tabel di akun A. Kebijakan ini juga mengizinkandynamodb:ListTables
tindakan, yang diperlukan untuk melakukan tindakan di konsol.catatan
Kebijakan izin tidak menyertakan MFA kondisi. Penting untuk dipahami bahwa MFA otentikasi hanya digunakan untuk menentukan apakah pengguna dapat mengambil peran tersebut. Setelah pengguna mengambil peran, tidak ada MFA pemeriksaan lebih lanjut yang dilakukan.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "TableActions", "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:*:
ACCOUNT-A-ID
:table/Books" }, { "Sid": "ListTables", "Effect": "Allow", "Action": "dynamodb:ListTables", "Resource": "*" } ] } -
Di akun B tepercaya, administrator memastikan bahwa IAM pengguna Richard dikonfigurasi dengan AWS MFA perangkat dan bahwa ia mengetahui ID perangkat. ID perangkat adalah nomor seri jika itu adalah MFA perangkat keras, atau perangkat ARN jika itu MFA perangkat virtual.
-
Di akun B, administrator melampirkan kebijakan berikut kepada pengguna Richard (atau grup yang ia anggota) yang memungkinkannya untuk menghubungi tindakan
AssumeRole
. Sumber daya diatur ke peran ARN yang dibuat Anaya pada langkah 1. Perhatikan bahwa kebijakan ini tidak mengandung MFA kondisi.{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": ["arn:aws:iam::
ACCOUNT-A-ID
:role/CrossAccountRole"] }] } -
Di akun B, Richard (atau aplikasi yang dijalankan Richard) akan memanggil
AssumeRole
. APIPanggilan tersebut ARN mencakup peran untuk asumsi (arn:aws:iam::
), ID MFA perangkat, dan arus TOTP yang diperoleh Richard dari perangkatnya.ACCOUNT-A-ID
:role/CrossAccountRoleKetika Richard menelepon
AssumeRole
, AWS menentukan apakah dia memiliki kredensi yang valid, termasuk persyaratan untuk. MFA Jika demikian, Richard berhasil mengasumsikan peran tersebut dan dapat melakukan tindakan DynamoDB apa pun pada tabel yangBooks
disebutkan di akun A saat menggunakan kredenal sementara peran.Sebagai contoh program yang memanggil
AssumeRole
, lihat Memanggil AssumeRole dengan MFA otentikasi.
Skenario: MFA perlindungan untuk akses ke API operasi di akun saat ini
Dalam skenario ini, Anda harus memastikan bahwa pengguna di Anda Akun AWS dapat mengakses API operasi sensitif hanya ketika pengguna diautentikasi menggunakan AWS MFA perangkat.
Bayangkan Anda memiliki akun A yang berisi sekelompok pengembang yang perlu bekerja dengan EC2 instance. Developer biasa dapat bekerja dengan instans, tetapi mereka tidak diberikan izin tindakan ec2:StopInstances
atau ec2:TerminateInstances
. Anda ingin membatasi tindakan istimewa “destruktif” tersebut hanya untuk beberapa pengguna tepercaya, sehingga Anda menambahkan MFA perlindungan pada kebijakan yang memungkinkan tindakan Amazon EC2 yang sensitif ini.
Dalam skenario ini, salah satu pengguna tepercaya tersebut adalah pengguna Sofía. Pengguna Anaya adalah administrator di akun A.
-
Anaya memastikan bahwa Sofía dikonfigurasi dengan AWS MFA perangkat dan Sofía mengetahui ID perangkat tersebut. ID perangkat adalah nomor seri jika itu adalah MFA perangkat keras, atau perangkat ARN jika itu MFA perangkat virtual.
-
Anaya membuat kelompok bernama
EC2-Admins
dan menambahkan Sofía ke grup. -
Anaya melampirkan kebijakan berikut ke kelompok
EC2-Admins
. Kebijakan ini memberi pengguna izin untuk memanggil Amazon EC2StopInstances
danTerminateInstances
tindakan hanya jika pengguna telah mengautentikasi penggunaan. MFA{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:StopInstances", "ec2:TerminateInstances" ], "Resource": ["*"], "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} }] }
-
catatan
Agar kebijakan ini berlaku, pengguna harus keluar terlebih dahulu dan masuk kembali.
Jika pengguna Sofía perlu menghentikan atau menghentikan EC2 instance Amazon, dia (atau aplikasi yang sedang dia jalankan) memanggil.
GetSessionToken
APIOperasi ini melewati ID MFA perangkat dan arus TOTP yang didapat Sofía dari perangkatnya. -
Pengguna Sofía (atau aplikasi yang digunakan Sofía) menggunakan kredensil sementara yang disediakan oleh untuk
GetSessionToken
memanggil Amazon atau tindakan. EC2StopInstances
TerminateInstances
Sebagai contoh program yang memanggil
GetSessionToken
, lihat Memanggil GetSessionToken dengan MFA otentikasi nanti di dokumen ini.
Skenario: MFA perlindungan untuk sumber daya yang memiliki kebijakan berbasis sumber daya
Dalam skenario ini, Anda adalah pemilik bucket S3, SQS antrian, atau topik. SNS Anda ingin memastikan bahwa setiap pengguna dari Akun AWS siapa pun yang mengakses sumber daya diautentikasi oleh perangkat. AWS MFA
Skenario ini menggambarkan cara untuk memberikan MFA perlindungan lintas akun tanpa mengharuskan pengguna untuk mengambil peran terlebih dahulu. Dalam hal ini, pengguna dapat mengakses sumber daya jika tiga kondisi terpenuhi: Pengguna harus diautentikasi olehMFA, dapat memperoleh kredensil keamanan sementara dariGetSessionToken
, dan berada di akun yang dipercaya oleh kebijakan sumber daya.
Bayangkan Anda berada di akun A dan Anda membuat bucket S3. Anda ingin memberikan akses ke bucket ini kepada pengguna yang berbeda Akun AWS, tetapi hanya jika pengguna tersebut diautentikasiMFA.
Dalam skenario ini, pengguna Anaya adalah administrator di akun A. Pengguna Nikhil adalah IAM pengguna di akun C.
-
Pada akun A, Anaya membuat bucket dengan nama
Account-A-bucket
. -
Anaya menambahkan kebijakan bucket ke bucket. Kebijakan ini memungkinkan pengguna di akun A, akun B, atau akun C untuk melakukan tindakan Amazon S3
PutObject
danDeleteObject
di dalam bucket. Kebijakan tersebut mencakup suatu MFA kondisi.{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"AWS": [ "ACCOUNT-A-ID", "ACCOUNT-B-ID", "ACCOUNT-C-ID" ]}, "Action": [ "s3:PutObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::
ACCOUNT-A-BUCKET-NAME
/*"], "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} }] }catatan
Amazon S3 menawarkan fitur MFA Hapus untuk akses akun root (hanya). Anda dapat mengaktifkan Amazon S3 MFA Delete saat menyetel status pembuatan versi bucket. Amazon S3 MFA Delete tidak dapat diterapkan ke IAM pengguna, dan dikelola secara independen dari akses MFA yang API dilindungi. IAMPengguna dengan izin untuk menghapus bucket tidak dapat menghapus bucket dengan Amazon MFA S3 Delete diaktifkan. Untuk informasi selengkapnya tentang Hapus Amazon S3, lihat MFA MFA Menghapus.
-
Di akun C, administrator memastikan bahwa pengguna Nikhil dikonfigurasi dengan AWS MFA perangkat dan bahwa ia mengetahui ID perangkat. ID perangkat adalah nomor seri jika itu adalah MFA perangkat keras, atau perangkat ARN jika itu MFA perangkat virtual.
-
Dalam akun C, Nikhil (atau aplikasi yang dia jalankan) akan memanggil
GetSessionToken
. Panggilan tersebut mencakup ID atau ARN MFA perangkat dan arus TOTP yang diperoleh Nikhil dari perangkatnya. -
Nikhil (atau aplikasi yang dia gunakan) menggunakan kredensial sementara yang dikembalikan oleh
GetSessionToken
untuk menghubungi tindakan Amazon S3PutObject
untuk mengunggah file keAccount-A-bucket
.Sebagai contoh program yang memanggil
GetSessionToken
, lihat Memanggil GetSessionToken dengan MFA otentikasi nanti di dokumen ini.catatan
Kredensial sementara yang dikembalikan
AssumeRole
tidak akan bekerja dalam kasus ini. Meskipun pengguna dapat memberikan MFA informasi untuk mengambil peran, kredenal sementara yang dikembalikan olehAssumeRole
tidak menyertakan informasi tersebutMFA. Informasi itu diperlukan untuk memenuhi MFA kondisi dalam kebijakan.