

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

# Contoh kebijakan berbasis sumber daya untuk Amazon Lex V2
<a name="security_iam_resource-based-policy-examples"></a>

*Kebijakan berbasis sumber daya dilampirkan* ke sumber daya, seperti bot atau alias bot. Dengan kebijakan berbasis sumber daya, Anda dapat menentukan siapa yang memiliki akses ke sumber daya dan tindakan yang dapat mereka lakukan di dalamnya. Misalnya, Anda dapat menambahkan kebijakan berbasis sumber daya yang memungkinkan pengguna memodifikasi bot tertentu, atau mengizinkan pengguna menggunakan operasi runtime pada alias bot tertentu.

Saat Anda menggunakan kebijakan berbasis sumber daya, Anda dapat mengizinkan layanan AWS lainnya mengakses sumber daya di akun Anda. Misalnya, Anda dapat mengizinkan Amazon Connect mengakses bot Amazon Lex V2.

Untuk mempelajari cara membuat bot atau bot alias, lihat[Bekerja dengan bot Amazon Lex V2](building-bots.md).

**Topics**
+ [Menggunakan konsol untuk menentukan kebijakan berbasis sumber daya](#security_iam_resource-based-policy-examples-console)
+ [Menggunakan API untuk menentukan kebijakan berbasis sumber daya](#security_iam_resource-based-policy-examples-api)
+ [Izinkan peran IAM untuk memperbarui bot dan daftar alias bot](#security_iam_resource-based-policy-examples-allow-lex-models)
+ [Memungkinkan pengguna untuk melakukan percakapan dengan bot](#security_iam_resource-based-policy-examples-allow-lex-runtime)
+ [Izinkan layanan AWS menggunakan bot Amazon Lex V2 tertentu](#security_iam_resource-based-policy-examples-allow-lex-connect)

## Menggunakan konsol untuk menentukan kebijakan berbasis sumber daya
<a name="security_iam_resource-based-policy-examples-console"></a>

Anda dapat menggunakan konsol Amazon Lex V2 untuk mengelola kebijakan berbasis sumber daya untuk bot dan alias bot Anda. Anda memasukkan struktur JSON kebijakan dan konsol mengaitkannya dengan sumber daya. Jika ada kebijakan yang telah dikaitkan dengan sumber daya, Anda dapat menggunakan konsol untuk melihat dan mengubah kebijakan.

Saat Anda menyimpan kebijakan dengan editor kebijakan, konsol akan memeriksa sintaks kebijakan tersebut. Jika kebijakan berisi kesalahan, seperti pengguna yang tidak ada atau tindakan yang tidak didukung oleh sumber daya, kebijakan akan menampilkan kesalahan dan tidak menyimpan kebijakan. 

Berikut ini menunjukkan editor kebijakan berbasis sumber daya untuk bot di konsol. Editor kebijakan untuk alias bot serupa.

![\[\]](http://docs.aws.amazon.com/id_id/lexv2/latest/dg/images/resource-policy-editor.png)


**Untuk membuka editor kebijakan untuk bot**

1. Masuk ke AWS Management Console dan buka konsol Amazon Lex di [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Dari daftar **Bots**, pilih bot yang kebijakannya ingin Anda edit.

1. **Di bagian **Kebijakan berbasis sumber daya**, pilih Edit.**

**Untuk membuka editor kebijakan untuk alias bot**

1. Masuk ke AWS Management Console dan buka konsol Amazon Lex di [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Dari daftar **Bots**, pilih bot yang berisi alias yang ingin Anda edit.

1. Dari menu sebelah kiri, pilih **Alias**, lalu pilih alias yang akan diedit.

1. **Di bagian **Kebijakan berbasis sumber daya**, pilih Edit.**

## Menggunakan API untuk menentukan kebijakan berbasis sumber daya
<a name="security_iam_resource-based-policy-examples-api"></a>

Anda dapat menggunakan operasi API untuk mengelola kebijakan berbasis sumber daya untuk bot dan alias bot Anda. Ada operasi untuk membuat, memperbarui, dan menghapus kebijakan.

[CreateResourcePolicy](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateResourcePolicy.html)  
Menambahkan kebijakan sumber daya baru dengan pernyataan kebijakan yang ditentukan ke bot atau alias bot.

[CreateResourcePolicyStatement](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateResourcePolicyStatement.html)  
Menambahkan pernyataan kebijakan sumber daya baru ke bot atau bot alias.

[DeleteResourcePolicy](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DeleteResourcePolicy.html)  
Menghapus kebijakan sumber daya dari bot atau bot alias.

[DeleteResourcePolicyStatement](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DeleteResourcePolicyStatement.html)  
Menghapus pernyataan kebijakan sumber daya dari bot atau bot alias.

[DescribeResourcePolicy](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DescribeResourcePolicy.html)  
Mendapat kebijakan sumber daya dan revisi kebijakan.

[UpdateResourcePolicy](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateResourcePolicy.html)  
Mengganti kebijakan sumber daya yang ada untuk bot atau bot alias dengan yang baru.

### Contoh
<a name="collapsible-api-example"></a>

------
#### [ Java ]

Contoh berikut menunjukkan cara menggunakan operasi kebijakan berbasis sumber daya untuk mengelola kebijakan berbasis sumber daya.

```
        /*
         * Create a new policy for the specified bot alias 
         * that allows a role to invoke lex:UpdateBotAlias on it.
         * The created policy will have revision id 1.
         */
        
        CreateResourcePolicyRequest createPolicyRequest =
                CreateResourcePolicyRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .policy("{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"BotAliasEditor\",\"Effect\": \"Allow\",\"Principal\": {\"AWS\": \"arn:aws:iam::123456789012:role/BotAliasEditor\"},\"Action\": [\"lex:UpdateBotAlias\"],\"Resource\":[\"arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID\"]]}")

        lexmodelsv2Client.createResourcePolicy(createPolicyRequest);
        
        /*
         * Overwrite the policy for the specified bot alias with a new policy.
         * Since no expectedRevisionId is provided, this request overwrites the current revision.
         * After this update, the revision id for the policy is 2.
         */
        UpdateResourcePolicyRequest updatePolicyRequest =
        UpdateResourcePolicyRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .policy("{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"BotAliasEditor\",\"Effect\": \"Deny\",\"Principal\": {\"AWS\": \"arn:aws:iam::123456789012:role/BotAliasEditor\"},\"Action\": [\"lex:UpdateBotAlias\"],\"Resource\":[\"arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID\"]]}")

        lexmodelsv2Client.updateResourcePolicy(updatePolicyRequest);
        
        /*
         * Creates a statement in an existing policy for the specified bot alias 
         * that allows a role to invoke lex:RecognizeText on it.
         * This request expects to update revision 2 of the policy. The request will fail
         * if the current revision of the policy is no longer revision 2.
         * After this request, the revision id for this policy will be 3.
         */
        
        CreateResourcePolicyStatementRequest createStatementRequest =
                CreateResourcePolicyStatementRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .effect("Allow")
                        .principal(Principal.builder().arn("arn:aws:iam::123456789012:role/BotRunner").build())
                        .action("lex:RecognizeText")
                        .statementId("BotRunnerStatement")
                        .expectedRevisionId(2)
                        .build();

        lexmodelsv2Client.createResourcePolicyStatement(createStatementRequest);

        /*
         * Deletes a statement from an existing policy for the specified bot alias by statementId.
         * Since no expectedRevisionId is supplied, the request will remove the statement from
         * the current revision of the policy for the bot alias. 
         * After this request, the revision id for this policy will be 4.
         */
        DeleteResourcePolicyRequest deleteStatementRequest =
                DeleteResourcePolicyRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .statementId("BotRunnerStatement")                        
                        .build();

        lexmodelsv2Client.deleteResourcePolicy(deleteStatementRequest);
        
        /*
         * Describe the current policy for the specified bot alias
         * It always returns the current revision.
         */
        DescribeResourcePolicyRequest describePolicyRequest =
                DescribeResourcePolicyRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .build();

        lexmodelsv2Client.describeResourcePolicy(describePolicyRequest);
        
        
        /*
         * Delete the current policy for the specified bot alias
         * This request expects to delete revision 3 of the policy. Since the revision id for 
         * this policy is already at 4, this request will fail.
         */
        DeleteResourcePolicyRequest deletePolicyRequest =
                DeleteResourcePolicyRequest.builder()
                        .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID")
                        .expectedRevisionId(3);
                        .build();

        lexmodelsv2Client.deleteResourcePolicy(deletePolicyRequest);
```

------

## Izinkan peran IAM untuk memperbarui bot dan daftar alias bot
<a name="security_iam_resource-based-policy-examples-allow-lex-models"></a>

Contoh berikut memberikan izin untuk peran IAM tertentu untuk memanggil operasi API pembuatan model Amazon Lex V2 untuk memodifikasi bot yang ada. Pengguna dapat membuat daftar alias untuk bot dan memperbarui bot, tetapi tidak dapat menghapus alias bot atau bot. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "botBuilders",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/BotBuilder"
            },
            "Action": [
                "lex:ListBotAliases",
                "lex:UpdateBot"
            ],
            "Resource": [
                "arn:aws:lex:us-east-1:123456789012:bot/MYBOT"
            ]
        }
    ]
}
```

------

## Memungkinkan pengguna untuk melakukan percakapan dengan bot
<a name="security_iam_resource-based-policy-examples-allow-lex-runtime"></a>

Contoh berikut memberikan izin bagi pengguna tertentu untuk memanggil operasi API runtime Amazon Lex V2 pada satu alias bot.

Pengguna secara khusus ditolak izin untuk memperbarui atau menghapus alias bot.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "botRunners",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/botRunner"
            },
            "Action": [
                "lex:RecognizeText",
                "lex:RecognizeUtterance",
                "lex:StartConversation",
                "lex:DeleteSession",
                "lex:GetSession",
                "lex:PutSession"
            ],
            "Resource": [
                "arn:aws:lex:us-east-1:123456789012:bot-alias/MYBOT/MYBOTALIAS"
            ]
        },
        {
            "Sid": "botRunners",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/botRunner"
            },
            "Action": [
                "lex:UpdateBotAlias",
                "lex:DeleteBotAlias"
            ],
            "Resource": [
                "arn:aws:lex:us-east-1:123456789012:bot-alias/MYBOT/MYBOTALIAS"
            ]
        }
    ]
}
```

------

## Izinkan layanan AWS menggunakan bot Amazon Lex V2 tertentu
<a name="security_iam_resource-based-policy-examples-allow-lex-connect"></a>

Contoh berikut memberikan izin untuk AWS Lambda dan Amazon Connect untuk memanggil operasi API runtime Amazon Lex V2.

Blok kondisi diperlukan untuk prinsipal layanan, dan harus menggunakan kunci konteks global dan. `AWS:SourceAccount` `AWS:SourceArn` 

`AWS:SourceAccount`Ini adalah ID akun yang memanggil bot Amazon Lex V2.

`AWS:SourceArn`Ini adalah ARN sumber daya dari instance layanan Amazon Connect atau fungsi Lambda tempat panggilan ke alias bot Amazon Lex V2 berasal.