

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
<a name="reference_policies_examples_aws_my-sec-creds-self-manage"></a>

**Contoh ini menunjukkan bagaimana Anda dapat membuat kebijakan berbasis identitas yang memungkinkan pengguna IAM yang diautentikasi menggunakan [otentikasi multi-faktor (MFA)](id_credentials_mfa.md) untuk mengelola kredensialnya sendiri di halaman Kredensi Keamanan.** Halaman Konsol Manajemen AWS 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 mengotentikasi 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](reference_policies_examples_aws_my-sec-creds-self-manage-no-mfa.md).

Untuk mempelajari cara pengguna mengakses halaman **Kredensial keamanan**, lihat. [Cara pengguna IAM mengubah kata sandi mereka sendiri (konsol)](id_credentials_passwords_user-change-own.md#ManagingUserPwdSelf-Console)

**catatan**  
Kebijakan contoh ini tidak mengizinkan pengguna untuk mengatur ulang kata sandi saat masuk Konsol Manajemen AWS untuk pertama kalinya. Kami menyarankan Anda untuk tidak memberikan izin kepada pengguna baru sampai mereka masuk. Untuk informasi selengkapnya, lihat [Bagaimana cara membuat pengguna IAM dengan aman?](troubleshoot.md#troubleshoot_general_securely-create-iam-users). 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 [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html)untuk mengautentikasi dengan MFA. Untuk informasi selengkapnya, lihat [Akses API aman dengan MFA](id_credentials_mfa_configure-api-require.md).

**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.
+ Pernyataan `AllowManageOwnSSHPublicKeys` mengizinkan pengguna untuk mengunggah, memperbarui, dan menghapus kunci publik SSH milik mereka untuk CodeCommit.
+ Pernyataan `AllowManageOwnGitCredentials` mengizinkan pengguna untuk membuat, memperbarui, dan menghapus kredensial Git milik mereka untuk CodeCommit.
+ `AllowManageOwnVirtualMFADevice`Pernyataan 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. 
+ `DenyAllExceptListedIfNoMFA`Pernyataan 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 untuk pernyataan ini, lihat [NotAction dengan Menolak](reference_policies_elements_notaction.md). 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:MultiFactorAuthPresent` 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`.

------
#### [ JSON ]

****  

```
{
    "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"
                }
            }
        }
    ]
}
```

------