

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

# Gunakan skrip untuk memigrasi kebijakan Anda secara massal untuk menggunakan tindakan IAM berbutir halus
<a name="migrate-iam-permissions"></a>

**catatan**  
Tindakan AWS Identity and Access Management (IAM) berikut telah mencapai akhir dukungan standar pada Juli 2023:  
`aws-portal`namespace
`purchase-orders:ViewPurchaseOrders`
`purchase-orders:ModifyPurchaseOrders`
Jika Anda menggunakan AWS Organizations, Anda dapat menggunakan [skrip migrasi kebijakan massal atau migrator](#migrate-iam-permissions) kebijakan massal untuk memperbarui kebijakan dari akun pembayar Anda. Anda juga dapat menggunakan [referensi pemetaan tindakan lama ke granular](migrate-granularaccess-iam-mapping-reference.md) untuk memverifikasi tindakan IAM yang perlu ditambahkan.  
Jika Anda memiliki Akun AWS, atau merupakan bagian dari yang AWS Organizations dibuat pada atau setelah 6 Maret 2023, 11:00 (PDT), tindakan halus sudah berlaku di organisasi Anda.

[Untuk membantu memigrasikan kebijakan IAM agar menggunakan tindakan baru, yang dikenal sebagai tindakan halus, Anda dapat menggunakan skrip dari situs web Sampel.AWS](https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles) 

Anda menjalankan skrip ini dari akun pembayar organisasi Anda untuk mengidentifikasi kebijakan yang terpengaruh berikut di organisasi Anda yang menggunakan tindakan IAM lama:
+ Kebijakan IAM yang dikelola pelanggan
+ Kebijakan inline IAM peran, grup, dan pengguna
+ Kebijakan kontrol layanan (SCPs) (hanya berlaku untuk akun pembayar)
+ Set izin

Skrip menghasilkan saran untuk tindakan baru yang sesuai dengan tindakan yang ada yang digunakan dalam kebijakan. Anda kemudian meninjau saran dan menggunakan skrip untuk menambahkan tindakan baru di semua kebijakan yang terpengaruh di organisasi Anda. Anda tidak perlu memperbarui kebijakan AWS terkelola atau AWS dikelola SCPs (misalnya, AWS Control Tower dan AWS Organizations SCPs).

Anda menggunakan skrip ini untuk: 
+ Sederhanakan pembaruan kebijakan untuk membantu Anda mengelola kebijakan yang terpengaruh dari akun pembayar.
+ Kurangi jumlah waktu yang Anda butuhkan untuk memperbarui kebijakan. Anda tidak perlu masuk ke setiap akun anggota dan memperbarui kebijakan secara manual.
+ Kelompokkan kebijakan yang identik dari akun anggota yang berbeda bersama-sama. Anda kemudian dapat meninjau dan menerapkan pembaruan yang sama di semua kebijakan yang identik, alih-alih meninjaunya satu per satu.
+ Pastikan akses pengguna tetap tidak terpengaruh setelah AWS menghentikan tindakan IAM lama pada 6 Juli 2023.

Untuk informasi selengkapnya tentang kebijakan dan kebijakan kontrol layanan (SCPs), lihat topik berikut: 
+ [Mengelola kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) dalam Panduan *Pengguna IAM*
+ [Kebijakan kontrol layanan (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) dalam *Panduan AWS Organizations Pengguna*
+ [Izin khusus](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetcustom.html) di Panduan Pengguna *Pusat Identitas IAM*

## Ikhtisar
<a name="overview-bulk-migrate-policies"></a>

Ikuti topik ini untuk menyelesaikan langkah-langkah berikut:

**Topics**
+ [Ikhtisar](#overview-bulk-migrate-policies)
+ [Prasyarat](#prerequisites-running-the-scripts)
+ [Langkah 1: Siapkan lingkungan Anda](#set-up-your-environment-and-download-the-scripts)
+ [Langkah 2: Buat CloudFormation StackSet](#create-the-cloudformation-stack)
+ [Langkah 3: Identifikasi kebijakan yang terpengaruh](#identify-the-affected-policies)
+ [Langkah 4: Tinjau perubahan yang disarankan](#review-the-affected-policies)
+ [Langkah 5: Perbarui kebijakan yang terpengaruh](#update-the-affected-policies)
+ [Langkah 6: Kembalikan perubahan Anda (Opsional)](#revert-changes)
+ [Contoh kebijakan IAM](#examples-of-similar-policies)

## Prasyarat
<a name="prerequisites-running-the-scripts"></a>

Untuk memulai, Anda harus melakukan hal berikut:
+ Unduh dan instal [Python 3](https://www.python.org/downloads/)
+ Masuk ke akun pembayar Anda dan verifikasi bahwa Anda memiliki prinsipal IAM yang memiliki izin IAM berikut:

  ```
  "iam:GetAccountAuthorizationDetails",
  "iam:GetPolicy",
  "iam:GetPolicyVersion",
  "iam:GetUserPolicy",
  "iam:GetGroupPolicy",
  "iam:GetRole",
  "iam:GetRolePolicy",
  "iam:CreatePolicyVersion",
  "iam:DeletePolicyVersion",
  "iam:ListAttachedRolePolicies",
  "iam:ListPolicyVersions",
  "iam:PutUserPolicy",
  "iam:PutGroupPolicy",
  "iam:PutRolePolicy",
  "iam:SetDefaultPolicyVersion",
  "organizations:ListAccounts",
  "organizations:ListPolicies",
  "organizations:DescribePolicy",
  "organizations:UpdatePolicy",
  "organizations:DescribeOrganization",
  "sso:DescribePermissionSet",
  "sso:DescribePermissionSetProvisioningStatus",
  "sso:GetInlinePolicyForPermissionSet",
  "sso:ListInstances",
  "sso:ListPermissionSets",
  "sso:ProvisionPermissionSet",
  "sso:PutInlinePolicyToPermissionSet",
  "sts:AssumeRole"
  ```

**Tip**  
Untuk memulai, kami menyarankan Anda menggunakan subset akun, seperti akun pengujian, untuk memverifikasi bahwa perubahan yang disarankan diharapkan.  
Anda kemudian dapat menjalankan skrip lagi untuk akun yang tersisa di organisasi Anda.

## Langkah 1: Siapkan lingkungan Anda
<a name="set-up-your-environment-and-download-the-scripts"></a>

Untuk memulai, unduh file yang diperlukan dari situs web [AWS Sampel](https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles). Anda kemudian menjalankan perintah untuk mengatur lingkungan Anda.

**Menyiapkan lingkungan Anda**

1. [Kloning repositori dari situs web Sampel.AWS](https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles) Di jendela baris perintah, Anda dapat menggunakan perintah berikut:

   ```
   git clone https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles.git
   ```

1. Arahkan ke direktori tempat Anda mengunduh file. Anda dapat menggunakan perintah berikut:

   ```
   cd bulk-policy-migrator-scripts-for-account-cost-billing-consoles
   ```

   Di repositori, Anda dapat menemukan skrip dan sumber daya berikut:
   + `billing_console_policy_migrator_role.json`— CloudFormation Template yang menciptakan peran `BillingConsolePolicyMigratorRole` IAM dalam akun anggota organisasi Anda. Peran ini memungkinkan skrip untuk mengambil peran, lalu membaca dan memperbarui kebijakan yang terpengaruh.
   + `action_mapping_config.json`— Berisi one-to-many pemetaan tindakan lama ke tindakan baru. Skrip menggunakan file ini untuk menyarankan tindakan baru untuk setiap kebijakan yang terpengaruh yang berisi tindakan lama. 

     Setiap tindakan lama sesuai dengan beberapa tindakan berbutir halus. Tindakan baru yang disarankan dalam file memberi pengguna akses ke hal yang sama Layanan AWS sebelum migrasi. 
   + `identify_affected_policies.py`— Memindai dan mengidentifikasi kebijakan yang terpengaruh di organisasi Anda. Skrip ini menghasilkan `affected_policies_and_suggestions.json` file yang mencantumkan kebijakan yang terpengaruh bersama dengan tindakan baru yang disarankan. 

     Kebijakan yang terpengaruh yang menggunakan kumpulan tindakan lama yang sama dikelompokkan bersama dalam file JSON, sehingga Anda dapat meninjau atau memperbarui tindakan baru yang disarankan.
   + `update_affected_policies.py`— Memperbarui kebijakan yang terpengaruh di organisasi Anda. Skrip memasukkan `affected_policies_and_suggestions.json` file, dan kemudian menambahkan tindakan baru yang disarankan ke kebijakan.
   + `rollback_affected_policies.py`— (Opsional) Mengembalikan perubahan yang dilakukan pada kebijakan yang terpengaruh. Skrip ini menghapus tindakan berbutir halus baru dari kebijakan yang terpengaruh.

1. Jalankan perintah berikut untuk mengatur dan mengaktifkan lingkungan virtual.

   ```
   python3 -m venv venv
   ```

   ```
   source venv/bin/activate
   ```

1. Jalankan perintah berikut untuk menginstal AWS SDK untuk Python (Boto3) dependensi.

   ```
   pip install -r requirements.txt
   ```
**catatan**  
Anda harus mengonfigurasi AWS kredensi Anda untuk menggunakan AWS Command Line Interface ()AWS CLI. Untuk informasi selengkapnya, lihat [AWS SDK untuk Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html).

Untuk informasi selengkapnya, lihat file [README.md.](https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles#readme)

## Langkah 2: Buat CloudFormation StackSet
<a name="create-the-cloudformation-stack"></a>

Ikuti prosedur ini untuk membuat *set CloudFormation tumpukan*. Kumpulan tumpukan ini kemudian membuat peran `BillingConsolePolicyMigratorRole` IAM untuk semua akun anggota di organisasi Anda.

**catatan**  
Anda hanya perlu menyelesaikan langkah ini sekali dari akun manajemen (akun pembayar).

**Untuk membuat CloudFormation StackSet**

1. Dalam editor teks, buka `billing_console_policy_migrator_role.json` file, dan ganti setiap contoh *`<management_account>`* dengan ID akun dari akun pembayar (misalnya,*123456789012*).

1. Simpan file tersebut.

1. Masuk ke akun Konsol Manajemen AWS sebagai pembayar.

1. Di CloudFormation konsol, buat set tumpukan dengan `billing_console_policy_migrator_role.json` file yang Anda perbarui. 

   Untuk informasi selengkapnya, lihat [Membuat kumpulan tumpukan di AWS CloudFormation konsol](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-getting-started-create.html) di *Panduan AWS CloudFormation Pengguna*.

Setelah CloudFormation membuat kumpulan tumpukan, setiap akun anggota di organisasi Anda memiliki peran `BillingConsolePolicyMigratorRole` IAM. 

Peran IAM berisi izin berikut:

```
"iam:GetAccountAuthorizationDetails",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetUserPolicy",
"iam:GetGroupPolicy",
"iam:GetRolePolicy",
"iam:CreatePolicyVersion",
"iam:DeletePolicyVersion",
"iam:ListPolicyVersions",
"iam:PutUserPolicy",
"iam:PutGroupPolicy",
"iam:PutRolePolicy",
"iam:SetDefaultPolicyVersion"
```

**Catatan**  
Untuk setiap akun anggota, skrip memanggil operasi [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API untuk mendapatkan kredensil sementara untuk mengambil peran IAM. `BillingConsolePolicyMigratorRole` 
Skrip memanggil operasi [ListAccounts](https://docs.aws.amazon.com/organizations/latest/APIReference/API_ListAccounts.html)API untuk mendapatkan semua akun anggota. 
Skrip juga memanggil operasi API IAM untuk melakukan izin baca dan tulis ke kebijakan.

## Langkah 3: Identifikasi kebijakan yang terpengaruh
<a name="identify-the-affected-policies"></a>

Setelah Anda membuat set tumpukan dan mengunduh file, jalankan `identify_affected_policies.py` skrip. Skrip ini mengasumsikan peran `BillingConsolePolicyMigratorRole` IAM untuk setiap akun anggota, dan kemudian mengidentifikasi kebijakan yang terpengaruh.

**Untuk mengidentifikasi kebijakan yang terpengaruh**

1. Arahkan ke direktori tempat Anda mengunduh skrip.

   ```
   cd policy_migration_scripts/scripts
   ```

1. Jalankan `identify_affected_policies.py` skrip. 

Anda dapat menggunakan parameter input berikut: 
+ Akun AWS bahwa Anda ingin skrip untuk memindai. Untuk menentukan akun, gunakan parameter input berikut:
  +  `--all`— Memindai semua akun anggota di organisasi Anda. 

    ```
    python3 identify_affected_policies.py --all
    ```
  +  `--accounts`— Memindai subset akun anggota di organisasi Anda. 

    ```
    python3 identify_affected_policies.py --accounts 111122223333, 444455556666, 777788889999
    ```
  + `--exclude-accounts`— Tidak termasuk akun anggota tertentu di organisasi Anda. 

    ```
    python3 identify_affected_policies.py --all --exclude-accounts 111111111111, 222222222222, 333333333333
    ```
+ ` –-action-mapping-config-file`— (Opsional) Tentukan jalur ke `action_mapping_config.json` file. Skrip menggunakan file ini untuk menghasilkan pembaruan yang disarankan untuk kebijakan yang terpengaruh. Jika Anda tidak menentukan jalur, skrip menggunakan `action_mapping_config.json` file di folder. 

  ```
  python3 identify_affected_policies.py –-action-mapping-config-file c:\Users\username\Desktop\Scripts\action_mapping_config.json –-all
  ```

**catatan**  
Anda tidak dapat menentukan unit organisasi (OUs) dengan skrip ini.

Setelah Anda menjalankan skrip, itu membuat dua file JSON dalam `Affected_Policies_<Timestamp>` folder:
+ `affected_policies_and_suggestions.json`
+ `detailed_affected_policies.json`

**`affected_policies_and_suggestions.json`**  
 Daftar kebijakan yang terpengaruh dengan tindakan baru yang disarankan. Kebijakan yang terpengaruh yang menggunakan kumpulan tindakan lama yang sama dikelompokkan bersama dalam file.  
File ini berisi bagian-bagian berikut:  
+ Metadata yang memberikan ikhtisar akun yang Anda tentukan dalam skrip, termasuk:
  + Akun dipindai dan parameter input yang digunakan untuk skrip `identify_affected_policies.py`
  + Jumlah akun yang terpengaruh
  + Jumlah kebijakan yang terpengaruh
  + Jumlah kelompok kebijakan serupa
+ Grup kebijakan serupa - Termasuk daftar akun dan detail kebijakan, termasuk bagian berikut:
  + `ImpactedPolicies`— Menentukan kebijakan mana yang terpengaruh dan termasuk dalam grup

     
  + `ImpactedPolicyStatements`— Memberikan informasi tentang `Sid` blok yang saat ini menggunakan tindakan lama dalam kebijakan yang terpengaruh. Bagian ini mencakup tindakan lama dan elemen IAM, seperti`Effect`,,`Principal`, `NotPrincipal``NotAction`, dan`Condition`.
+ `SuggestedPolicyStatementsToAppend`— Menyediakan tindakan baru yang disarankan yang ditambahkan sebagai `SID` blok baru. 

  Saat Anda memperbarui kebijakan, blok ini ditambahkan di akhir kebijakan.

**Example Contoh file `affected_policies_and_suggestions.json`**  
File ini mengelompokkan kebijakan yang serupa berdasarkan kriteria berikut:  
+ Tindakan lama yang sama digunakan — Kebijakan yang memiliki tindakan lama yang sama di semua `SID` blok.
+ Detail pencocokan — Selain tindakan yang terpengaruh, kebijakan memiliki elemen IAM yang identik, seperti:
  + `Effect` (`Allow`/`Deny`)
  + `Principal`(yang diizinkan atau ditolak aksesnya)
  + `NotAction`(tindakan apa yang tidak diperbolehkan)
  + `NotPrincipal`(yang secara eksplisit ditolak aksesnya)
  + `Resource`( AWS sumber daya yang berlaku untuk kebijakan)
  + `Condition`(kondisi spesifik apa pun di mana kebijakan berlaku) 
Untuk informasi selengkapnya, lihat [Contoh kebijakan IAM](#examples-of-similar-policies).

**Example Contoh `affected_policies_and_suggestions.json`**  

```
[{
        "AccountsScanned": [
            "111111111111",
            "222222222222"
        ],
        "TotalAffectedAccounts": 2,
        "TotalAffectedPolicies": 2,
        "TotalSimilarPolicyGroups": 2
    },
    {
        "GroupName": "Group1",
        "ImpactedPolicies": [{
                "Account": "111111111111",
                "PolicyType": "UserInlinePolicy",
                "PolicyName": "Inline-Test-Policy-Allow",
                "PolicyIdentifier": "1111111_1-user:Inline-Test-Policy-Allow"
            },
            {
                "Account": "222222222222",
                "PolicyType": "UserInlinePolicy",
                "PolicyName": "Inline-Test-Policy-Allow",
                "PolicyIdentifier": "222222_1-group:Inline-Test-Policy-Allow"
            }
        ],
        "ImpactedPolicyStatements": [
            [{
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "aws-portal:ViewAccounts"
                ],
                "Resource": "*"
            }]
        ],
        "SuggestedPolicyStatementsToAppend": [{
            "Sid": "BillingConsolePolicyMigrator0",
            "Effect": "Allow",
            "Action": [
                "account:GetAccountInformation",
                "account:GetAlternateContact",
                "account:GetChallengeQuestions",
                "account:GetContactInformation",
                "billing:GetContractInformation",
                "billing:GetIAMAccessPreference",
                "billing:GetSellerOfRecord",
                "payments:ListPaymentPreferences"
            ],
            "Resource": "*"
        }]
    },
    {
        "GroupName": "Group2",
        "ImpactedPolicies": [{
                "Account": "111111111111",
                "PolicyType": "UserInlinePolicy",
                "PolicyName": "Inline-Test-Policy-deny",
                "PolicyIdentifier": "1111111_2-user:Inline-Test-Policy-deny"
            },
            {
                "Account": "222222222222",
                "PolicyType": "UserInlinePolicy",
                "PolicyName": "Inline-Test-Policy-deny",
                "PolicyIdentifier": "222222_2-group:Inline-Test-Policy-deny"
            }
        ],
        "ImpactedPolicyStatements": [
            [{
                "Sid": "VisualEditor0",
                "Effect": "deny",
                "Action": [
                    "aws-portal:ModifyAccount"
                ],
                "Resource": "*"
            }]
        ],
        "SuggestedPolicyStatementsToAppend": [{
            "Sid": "BillingConsolePolicyMigrator1",
            "Effect": "Deny",
            "Action": [
                "account:CloseAccount",
                "account:DeleteAlternateContact",
                "account:PutAlternateContact",
                "account:PutChallengeQuestions",
                "account:PutContactInformation",
                "billing:PutContractInformation",
                "billing:UpdateIAMAccessPreference",
                "payments:UpdatePaymentPreferences"
            ],
            "Resource": "*"
        }]
    }
]
```

**`detailed_affected_policies.json`**  
Berisi definisi semua kebijakan yang terpengaruh yang diidentifikasi `identify_affected_policies.py` skrip untuk akun anggota.  
File mengelompokkan kebijakan serupa bersama-sama. Anda dapat menggunakan file ini sebagai referensi, sehingga Anda dapat meninjau dan mengelola perubahan kebijakan tanpa perlu masuk ke setiap akun anggota untuk meninjau pembaruan untuk setiap kebijakan dan akun satu per satu.  
Anda dapat mencari file untuk nama kebijakan (misalnya,`YourCustomerManagedReadOnlyAccessBillingUser`) dan kemudian meninjau definisi kebijakan yang terpengaruh.   

**Example Contoh: `detailed_affected_policies.json`**  

## Langkah 4: Tinjau perubahan yang disarankan
<a name="review-the-affected-policies"></a>

Setelah skrip membuat `affected_policies_and_suggestions.json` file, tinjau dan buat perubahan apa pun.

**Untuk meninjau kebijakan yang terpengaruh**

1. Dalam editor teks, buka `affected_policies_and_suggestions.json` file.

1. Di `AccountsScanned` bagian ini, verifikasi bahwa jumlah grup serupa yang diidentifikasi di seluruh akun yang dipindai diharapkan.

1. Tinjau tindakan halus yang disarankan yang akan ditambahkan ke kebijakan yang terpengaruh.

1. Perbarui file Anda sesuai kebutuhan dan kemudian simpan.

### Contoh 1: Perbarui `action_mapping_config.json` file
<a name="example-1-update-action-mapping-config-file"></a>

Anda dapat memperbarui pemetaan yang disarankan di. `action_mapping_config.json` Setelah Anda memperbarui file, Anda dapat menjalankan kembali `identify_affected_policies.py` skrip. Skrip ini menghasilkan saran terbaru untuk kebijakan yang terpengaruh.

Anda dapat membuat beberapa versi `action_mapping_config.json` file untuk mengubah kebijakan untuk akun yang berbeda dengan izin yang berbeda. Misalnya, Anda dapat membuat satu file bernama `action_mapping_config_testing.json` untuk memigrasikan izin untuk akun pengujian dan `action_mapping_config_production.json` untuk akun produksi Anda.

### Contoh 2: Perbarui `affected_policies_and_suggestions.json` file
<a name="example-2-make-changes-to-affected-policy-groups"></a>

Untuk membuat perubahan pada penggantian yang disarankan untuk grup kebijakan tertentu yang terpengaruh, Anda dapat langsung mengedit bagian penggantian yang disarankan di dalam file. `affected_policies_and_suggestions.json` 

Setiap perubahan yang Anda buat di bagian ini diterapkan pada semua kebijakan dalam grup kebijakan tertentu yang terpengaruh tersebut.

### Contoh 3: Sesuaikan kebijakan tertentu
<a name="example-3-customize-a-specific-policy"></a>

Jika Anda menemukan kebijakan dalam grup kebijakan yang terpengaruh yang memerlukan perubahan berbeda dari pembaruan yang disarankan, Anda dapat melakukan hal berikut:
+ Kecualikan akun tertentu dari `identify_affected_policies.py` skrip. Anda kemudian dapat meninjau akun yang dikecualikan tersebut secara terpisah.
+ Perbarui `Sid` blok yang terpengaruh dengan menghapus kebijakan dan akun yang terpengaruh yang memerlukan izin berbeda. Buat blok JSON yang hanya menyertakan akun tertentu atau mengecualikannya dari proses kebijakan yang terpengaruh pembaruan saat ini. 

  Saat Anda menjalankan ulang `identify_affected_policies.py` skrip, hanya akun yang relevan yang muncul di blok yang diperbarui. Anda kemudian dapat menyempurnakan penggantian yang disarankan untuk blok tertentu `Sid` itu.

## Langkah 5: Perbarui kebijakan yang terpengaruh
<a name="update-the-affected-policies"></a>

Setelah Anda meninjau dan menyempurnakan penggantian yang disarankan, jalankan skrip. `update_affected_policies.py` Script mengambil `affected_policies_and_suggestions.json` file sebagai input. Skrip ini mengasumsikan peran `BillingConsolePolicyMigratorRole` IAM untuk memperbarui kebijakan yang terpengaruh yang tercantum dalam file. `affected_policies_and_suggestions.json` 

**Untuk memperbarui kebijakan yang terpengaruh**

1. Jika Anda belum melakukannya, buka jendela baris perintah untuk file AWS CLI.

1. Masukkan perintah berikut untuk menjalankan `update_affected_policies.py` skrip. Anda dapat memasukkan parameter input berikut:
+ Jalur direktori `affected_policies_and_suggestions.json` file yang berisi daftar kebijakan yang terpengaruh untuk diperbarui. File ini merupakan output dari langkah sebelumnya.

```
python3 update_affected_policies.py --affected-policies-directory Affected_Policies_<Timestamp>
```

`update_affected_policies.py`Skrip memperbarui kebijakan yang terpengaruh dalam `affected_policies_and_suggestions.json` file dengan tindakan baru yang disarankan. Skrip menambahkan `Sid` blok ke kebijakan, diidentifikasi sebagai`BillingConsolePolicyMigrator#`, di mana *\$1* sesuai dengan penghitung tambahan (misalnya, 1, 2, 3). 

Misalnya, jika ada beberapa `Sid` blok dalam kebijakan yang terpengaruh yang menggunakan tindakan lama, skrip akan menambahkan beberapa `Sid` blok yang muncul `BillingConsolePolicyMigrator#` sesuai dengan setiap `Sid` blok.

**penting**  
Skrip tidak menghapus tindakan IAM lama dari kebijakan, dan atau mengubah `Sid` blok yang ada dalam kebijakan. Sebagai gantinya, ia membuat `Sid` blok dan menambahkannya ke akhir kebijakan. `Sid`Blok baru ini memiliki tindakan baru yang disarankan dari file JSON. Ini memastikan bahwa izin kebijakan asli tidak diubah.
Kami menyarankan Anda untuk tidak mengubah nama `BillingConsolePolicyMigrator#` `Sid` blok jika Anda perlu mengembalikan perubahan Anda.

**Example Contoh: Kebijakan dengan blok yang ditambahkan `Sid`**  
Lihat blok yang ditambahkan di `Sid` `BillingConsolePolicyMigrator2` blok `BillingConsolePolicyMigrator1` dan.

Skrip menghasilkan laporan status yang berisi operasi yang gagal dan mengeluarkan file JSON secara lokal.

**Example Contoh: Laporan status**  

```
[{
    "Account": "111111111111",
    "PolicyType": "Customer Managed Policy"
    "PolicyName": "AwsPortalViewPaymentMethods",
    "PolicyIdentifier": "identifier",
    "Status": "FAILURE", // FAILURE or SKIPPED	
    "ErrorMessage": "Error message details"
}]
```

**penting**  
Jika Anda menjalankan ulang `update_affected_policies.py` skrip `identify_affected_policies.py` dan skrip, mereka akan melewati semua kebijakan yang berisi blok tersebut. `BillingConsolePolicyMigratorRole#` `Sid` Skrip berasumsi bahwa kebijakan tersebut sebelumnya dipindai dan diperbarui, dan tidak memerlukan pembaruan tambahan. Ini mencegah skrip menduplikasi tindakan yang sama dalam kebijakan.
Setelah memperbarui kebijakan yang terpengaruh, Anda dapat menggunakan IAM baru dengan menggunakan alat kebijakan yang terpengaruh. Jika Anda mengidentifikasi masalah apa pun, Anda dapat menggunakan alat ini untuk beralih kembali ke tindakan sebelumnya. Anda juga dapat menggunakan skrip untuk mengembalikan pembaruan kebijakan Anda.  
Untuk informasi selengkapnya, lihat [Cara menggunakan alat kebijakan yang terpengaruh](migrate-security-iam-tool.md) dan posting [blog Perubahan pada AWS Penagihan, Manajemen Biaya, dan Izin Konsol Akun](https://aws.amazon.com/blogs/aws-cloud-financial-management/changes-to-aws-billing-cost-management-and-account-consoles-permissions/).
Untuk mengelola pembaruan Anda, Anda dapat:  
Jalankan skrip untuk setiap akun satu per satu.
Jalankan skrip dalam batch untuk akun serupa, seperti pengujian, QA, dan akun produksi.
Jalankan skrip untuk semua akun.
Pilih campuran antara memperbarui beberapa akun dalam batch, dan kemudian memperbarui yang lain satu per satu.

## Langkah 6: Kembalikan perubahan Anda (Opsional)
<a name="revert-changes"></a>

`rollback_affected_policies.py`Skrip mengembalikan perubahan yang diterapkan pada setiap kebijakan yang terpengaruh untuk akun yang ditentukan. Skrip menghapus semua `Sid` blok yang ditambahkan `update_affected_policies.py` skrip. `Sid`Blok-blok ini memiliki `BillingConsolePolicyMigratorRole#` format.

**Untuk mengembalikan perubahan Anda**

1. Jika Anda belum melakukannya, buka jendela baris perintah untuk file AWS CLI.

1. Masukkan perintah berikut untuk menjalankan `rollback_affected_policies.py` skrip. Anda dapat memasukkan parameter input berikut:
+ `--accounts` 
  + Menentukan daftar dipisahkan koma dari yang ingin Anda sertakan dalam rollback. Akun AWS IDs 
  + Contoh berikut memindai kebijakan dalam yang ditentukan Akun AWS, dan menghapus pernyataan apa pun dengan `BillingConsolePolicyMigrator#` `Sid` blok. 

    ```
    python3 rollback_affected_policies.py –-accounts 111122223333, 555555555555, 666666666666
    ```
+ `--all`
  + Termasuk semua Akun AWS IDs dalam organisasi Anda. 
  + Contoh berikut memindai semua kebijakan di organisasi Anda, dan menghapus pernyataan apa pun dengan `BillingConsolePolicyMigratorRole#` `Sid` blok tersebut.

  ```
  python3 rollback_affected_policies.py –-all
  ```
+ `--exclude-accounts`
  + Menentukan daftar dipisahkan koma dari yang ingin Anda kecualikan dari rollback. Akun AWS IDs 

    Anda dapat menggunakan parameter ini hanya ketika Anda juga menentukan `--all` parameter. 
  + Contoh berikut memindai kebijakan untuk semua Akun AWS di organisasi Anda, kecuali untuk akun yang ditentukan.

    ```
    python3 rollback_affected_policies.py --all --exclude-accounts 777777777777, 888888888888, 999999999999
    ```

## Contoh kebijakan IAM
<a name="examples-of-similar-policies"></a>

Kebijakan dianggap serupa jika mereka identik: 
+  Tindakan yang terpengaruh di semua `Sid` blok. 
+  Detail dalam elemen IAM berikut:
  + `Effect` (`Allow`/`Deny`)
  + `Principal`(yang diizinkan atau ditolak aksesnya)
  + `NotAction`(tindakan apa yang tidak diperbolehkan)
  + `NotPrincipal`(yang secara eksplisit ditolak aksesnya)
  + `Resource`( AWS sumber daya yang berlaku untuk kebijakan)
  + `Condition`(kondisi spesifik apa pun di mana kebijakan berlaku)

Contoh berikut menunjukkan kebijakan yang mungkin atau mungkin tidak dianggap serupa oleh IAM berdasarkan perbedaan di antara keduanya. 

**Example Contoh 1: Kebijakan dianggap serupa**  
Setiap jenis kebijakan berbeda, tetapi kedua kebijakan berisi satu `Sid` blok dengan pengaruh yang sama`Action`.     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing"
        ],
        "Resource": "*"
    }]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing"
        ],
        "Resource": "*"
    }]
}
```

**Example Contoh 2: Kebijakan dianggap serupa**  
Kedua kebijakan berisi satu `Sid` blok dengan pengaruh yang sama`Action`. Kebijakan 2 berisi tindakan tambahan, tetapi tindakan ini tidak terpengaruh.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing"
        ],
        "Resource": "*"
    }]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing",
            "athena:*"
        ],
        "Resource": "*"
    }]
}
```

**Example Contoh 3: Kebijakan tidak dianggap serupa**  
Kedua kebijakan berisi satu `Sid` blok dengan pengaruh yang sama`Action`. Namun, kebijakan 2 berisi `Condition` elemen yang tidak ada dalam kebijakan 1.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing"
        ],
        "Resource": "*"
    }]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:ViewAccount",
            "aws-portal:*Billing",
            "athena:*"
        ],
        "Resource": "*",
        "Condition": {
            "BoolIfExists": {
                "aws:MultiFactorAuthPresent": "true"
            }
        }
    }]
}
```

**Example Contoh 4: Kebijakan dianggap serupa**  
Kebijakan 1 memiliki satu `Sid` blok dengan yang terpengaruh`Action`. Kebijakan 2 memiliki beberapa `Sid` blok, tetapi yang terpengaruh hanya `Action` muncul dalam satu blok.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:View*"
        ],
        "Resource": "*"
    }]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:View*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:Get*"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Contoh 5: Kebijakan tidak dianggap serupa**  
Kebijakan 1 memiliki satu `Sid` blok dengan yang terpengaruh`Action`. Kebijakan 2 memiliki beberapa `Sid` blok, dan yang terpengaruh `Action` muncul di beberapa blok.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "aws-portal:View*"
        ],
        "Resource": "*"
    }]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:View*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": [
                "aws-portal:Modify*"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Contoh 6: Kebijakan dianggap serupa**  
Kedua kebijakan memiliki beberapa `Sid` blok, dengan dampak yang sama `Action` di setiap `Sid` blok.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:*Account",
                "iam:Get*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": [
                "aws-portal:Modify*",
                "iam:Update*"
            ],
            "Resource": "*"
        }
    ]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:*Account",
                "athena:Get*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": [
                "aws-portal:Modify*",
                "athena:Update*"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Contoh 7**  
Dua kebijakan berikut ini tidak dianggap serupa.  
Kebijakan 1 memiliki satu `Sid` blok dengan yang terpengaruh`Action`. Kebijakan 2 memiliki `Sid` blok dengan dampak yang sama`Action`. Namun, kebijakan 2 juga berisi `Sid` blok lain dengan tindakan berbeda.     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:*Account",
                "iam:Get*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": [
                "aws-portal:Modify*",
                "iam:Update*"
            ],
            "Resource": "*"
        }
    ]
}
```  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "aws-portal:*Account",
                "athena:Get*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": [
                "aws-portal:*Billing",
                "athena:Update*"
            ],
            "Resource": "*"
        }
    ]
}
```