AWS: Memungkinkan pengguna IAM yang diautentikasi MFA untuk mengelola kredensialnya sendiri di halaman kredensi Keamanan - AWS Identity and Access Management

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

AWS: Memungkinkan pengguna IAM yang diautentikasi MFA untuk mengelola kredensialnya sendiri di halaman kredensi Keamanan

Contoh ini menunjukkan bagaimana Anda dapat membuat kebijakan berbasis identitas yang memungkinkan pengguna IAM yang diautentikasi menggunakan otentikasi multi-faktor (MFA) untuk mengelola kredensialnya sendiri di halaman Kredensi Keamanan. Halaman AWS Management Console ini menampilkan informasi akun seperti ID akun dan ID pengguna kanonik. Pengguna juga dapat melihat dan mengubah kata sandi, access key, perangkat MFA, sertifikat X.509, dan kunci SSH serta kredensial Git milik mereka. Contoh kebijakan ini mencakup izin yang diperlukan untuk melihat dan mengubah semua informasi di halaman tersebut. Ini juga mengharuskan pengguna untuk mengatur dan mengautentikasi menggunakan MFA sebelum melakukan operasi lain di. AWS Untuk mengizinkan pengguna mengelola kredensial milik mereka tanpa menggunakan MFA, lihat AWS: Memungkinkan pengguna IAM untuk mengelola kredensialnya sendiri di halaman kredensial Keamanan.

Untuk mempelajari cara pengguna dapat mengakses halaman Kredensial keamanan, lihat. Cara pengguna IAM mengubah kata sandi mereka sendiri (konsol)

catatan
  • Kebijakan contoh ini tidak mengizinkan pengguna untuk mengatur ulang kata sandi saat masuk AWS Management Console untuk pertama kalinya. Kami menyarankan Anda untuk tidak memberikan izin kepada pengguna baru sampai setelah mereka masuk. Untuk informasi selengkapnya, lihat Bagaimana cara membuat pengguna IAM dengan aman?. Ini juga mencegah pengguna dengan kata sandi yang kedaluwarsa mengatur ulang kata sandi mereka saat masuk. Anda dapat mengizinkan ini dengan menambahkan iam:ChangePassword dan iam:GetAccountPasswordPolicy ke pernyataan DenyAllExceptListedIfNoMFA. Namun, kami tidak merekomendasikan ini karena mengizinkan pengguna untuk mengubah kata sandi mereka tanpa MFA dapat menjadi risiko keamanan.

  • Jika Anda bermaksud menggunakan kebijakan ini untuk akses terprogram, Anda harus menelepon GetSessionTokenuntuk mengautentikasi dengan MFA. Untuk informasi selengkapnya, lihat Mengonfigurasi akses API yang dilindungi MFA.

Apa yang dilakukan kebijakan ini?

  • Pernyataan AllowViewAccountInfo mengizinkan pengguna untuk melihat informasi tingkat akun. Izin ini harus ada di dalam pernyataan milik mereka karena hal itu tidak mendukung atau tidak perlu untuk menentukan ARN sumber daya tertentu. Alih-alih, izin ini menentukan "Resource" : "*". Pernyataan ini mencakup tindakan berikut yang mengizinkan pengguna melihat informasi spesifik:

    • GetAccountPasswordPolicy – Melihat persyaratan kata sandi akun saat mengubah kata sandi pengguna IAM milik mereka.

    • ListVirtualMFADevices – Melihat detail tentang perangkat MFA virtual yang diaktifkan untuk pengguna.

  • Pernyataan AllowManageOwnPasswords mengizinkan pengguna untuk mengubah kata sandi milik mereka. Pernyataan ini juga mencakup GetUser tindakan, yang diperlukan untuk melihat sebagian besar informasi di halaman Kredensi Keamanan Saya.

  • Pernyataan AllowManageOwnAccessKeys mengizinkan pengguna untuk membuat, memperbarui, dan menghapus access key milik mereka. Pengguna juga dapat mengambil informasi tentang kapan kunci akses yang ditentukan terakhir digunakan.

  • Pernyataan AllowManageOwnSigningCertificates mengizinkan pengguna untuk mengunggah, memperbarui, dan menghapus sertifikat tanda tangan milik mereka.

  • AllowManageOwnSSHPublicKeysPernyataan ini memungkinkan pengguna untuk mengunggah, memperbarui, dan menghapus kunci publik SSH mereka sendiri. CodeCommit

  • AllowManageOwnGitCredentialsPernyataan ini memungkinkan pengguna untuk membuat, memperbarui, dan menghapus kredensi Git mereka sendiri untuk. CodeCommit

  • AllowManageOwnVirtualMFADevicePernyataan tersebut memungkinkan pengguna untuk membuat perangkat MFA virtual mereka sendiri. ARN sumber daya dalam pernyataan ini memungkinkan pengguna untuk membuat perangkat MFA dengan nama apa pun, tetapi pernyataan lain dalam kebijakan hanya mengizinkan pengguna untuk melampirkan perangkat ke pengguna yang saat ini masuk.

  • Pernyataan AllowManageOwnUserMFA mengizinkan pengguna melihat atau mengelola perangkat MFA virtual, U2F, atau perangkat keras untuk pengguna milik mereka. ARN sumber daya dalam pernyataan ini mengizinkan akses hanya ke pengguna IAM milik pengguna. Pengguna tidak dapat melihat atau mengelola perangkat MFA untuk pengguna lain.

  • DenyAllExceptListedIfNoMFAPernyataan tersebut menolak akses ke setiap tindakan di semua AWS layanan, kecuali beberapa tindakan yang terdaftar, tetapi hanya jika pengguna tidak masuk dengan MFA. Pernyataan ini menggunakan kombinasi "Deny" dan "NotAction" untuk secara tegas menolak akses ke setiap tindakan yang tidak tercantum. Item yang tercantum tidak ditolak atau diizinkan oleh pernyataan ini. Namun, tindakan tersebut diizinkan oleh pernyataan lain dalam kebijakan tersebut. Untuk informasi lebih lanjut tentang logika pernyataan ini, lihat NotAction dengan Deny. Jika pengguna masuk di dengan MFA, maka pengujian Condition gagal dan pernyataan ini tidak menolak tindakan apa pun. Dalam kasus ini, kebijakan atau pernyataan lain untuk pengguna menentukan izin pengguna.

    Pernyataan ini memastikan bahwa ketika pengguna belum masuk dengan MFA yang dapat mereka lakukan hanya tindakan yang tercantum. Sebagai tambahan, mereka dapat melakukan tindakan yang tercantum hanya jika pernyataan atau kebijakan lain mengizinkan akses ke tindakan tersebut. Ini tidak mengizinkan pengguna untuk membuat kata sandi saat masuk, karena tindakan iam:ChangePassword seharusnya tidak boleh diizinkan tanpa otorisasi MFA.

    Versi ...IfExists dari operator Bool memastikan bahwa jika kunci aws: MultiFactor AuthPresent hilang, ketentuan menghasilkan sah. Ini berarti bahwa pengguna yang mengakses kredensial jangka panjang sebuah API, seperti kunci akses, tidak diberi akses ke operasi API non-IAM.

Kebijakan ini tidak mengizinkan pengguna untuk melihat halaman Pengguna di konsol IAM atau menggunakan halaman tersebut untuk mengakses informasi pengguna milik mereka. Untuk mengizinkan ini, tambahkan tindakan iam:ListUsers ke pernyataan AllowViewAccountInfo dan pernyataan DenyAllExceptListedIfNoMFA. Ini juga tidak mengizinkan pengguna untuk mengubah kata sandi mereka di halaman pengguna milik mereka. Untuk memungkinkan ini, tambahkan iam:GetLoginProfile dan iam:UpdateLoginProfile tindakan ke AllowManageOwnPasswords pernyataan. Untuk juga mengizinkan pengguna mengubah kata sandi mereka dari halaman pengguna milik mereka tanpa masuk menggunakan MFA, tambahkan tindakan iam:UpdateLoginProfile ke pernyataan DenyAllExceptListedIfNoMFA.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowViewAccountInfo", "Effect": "Allow", "Action": [ "iam:GetAccountPasswordPolicy", "iam:ListVirtualMFADevices" ], "Resource": "*" }, { "Sid": "AllowManageOwnPasswords", "Effect": "Allow", "Action": [ "iam:ChangePassword", "iam:GetUser" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnAccessKeys", "Effect": "Allow", "Action": [ "iam:CreateAccessKey", "iam:DeleteAccessKey", "iam:ListAccessKeys", "iam:UpdateAccessKey", "iam:GetAccessKeyLastUsed" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnSigningCertificates", "Effect": "Allow", "Action": [ "iam:DeleteSigningCertificate", "iam:ListSigningCertificates", "iam:UpdateSigningCertificate", "iam:UploadSigningCertificate" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnSSHPublicKeys", "Effect": "Allow", "Action": [ "iam:DeleteSSHPublicKey", "iam:GetSSHPublicKey", "iam:ListSSHPublicKeys", "iam:UpdateSSHPublicKey", "iam:UploadSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnGitCredentials", "Effect": "Allow", "Action": [ "iam:CreateServiceSpecificCredential", "iam:DeleteServiceSpecificCredential", "iam:ListServiceSpecificCredentials", "iam:ResetServiceSpecificCredential", "iam:UpdateServiceSpecificCredential" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:CreateVirtualMFADevice" ], "Resource": "arn:aws:iam::*:mfa/*" }, { "Sid": "AllowManageOwnUserMFA", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice", "iam:EnableMFADevice", "iam:ListMFADevices", "iam:ResyncMFADevice" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:GetMFADevice", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken" ], "Resource": "*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } } ] }