

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

# Keamanan dan kepatuhan di Amazon DynamoDB
<a name="security"></a>

Keamanan cloud di AWS adalah prioritas tertinggi. Sebagai AWS pelanggan, Anda mendapat manfaat dari pusat data dan arsitektur jaringan yang dibangun untuk memenuhi persyaratan organisasi yang paling sensitif terhadap keamanan.

Keamanan adalah tanggung jawab bersama antara Anda AWS dan Anda. [Model tanggung jawab bersama](https://aws.amazon.com/compliance/shared-responsibility-model/) menggambarkan hal ini sebagai keamanan *dari* cloud dan keamanan *di* cloud:
+ **Keamanan cloud** — AWS bertanggung jawab untuk melindungi infrastruktur yang menjalankan AWS layanan di AWS Cloud. AWS juga memberi Anda layanan yang dapat Anda gunakan dengan aman. Efektivitas keamanan kami diuji dan diverifikasi secara rutin oleh auditor pihak ketiga sebagai bagian dari [program kepatuhan AWS](https://aws.amazon.com/compliance/programs/). Untuk mempelajari tentang program kepatuhan yang berlaku untuk DynamoDB, lihat [Layanan AWS dalam Cakupan Program Kepatuhan](https://aws.amazon.com/compliance/services-in-scope/).
+ **Keamanan di cloud** — Tanggung jawab Anda ditentukan oleh AWS layanan yang Anda gunakan. Anda juga bertanggung jawab atas faktor-faktor lain termasuk sensitivitas data Anda, persyaratan organisasi Anda, serta undang-undang dan peraturan yang berlaku.

Dokumentasi ini akan membantu Anda memahami cara menerapkan model tanggung jawab bersama saat menggunakan DynamoDB. Topik berikut menunjukkan cara mengonfigurasi DynamoDB untuk memenuhi tujuan keamanan dan kepatuhan Anda. Anda juga akan belajar cara menggunakan AWS layanan lain yang dapat membantu Anda memantau dan mengamankan sumber daya DynamoDB Anda.

**Topics**
+ [AWS kebijakan terkelola untuk Amazon DynamoDB](ddb-security-iam.awsmanpol.md)
+ [Menggunakan kebijakan berbasis sumber daya untuk DynamoDB](access-control-resource-based.md)
+ [Menggunakan kontrol akses berbasis atribut dengan DynamoDB](attribute-based-access-control.md)
+ [Perlindungan data di DynamoDB](data-protection.md)
+ [AWS Identity and Access Management (IAM) dan DynamoDB](identity-and-access-mgmt.md)
+ [Validasi kepatuhan oleh industri untuk DynamoDB](Compliance.md)
+ [Ketahanan dan pemulihan bencana di Amazon DynamoDB](disaster-recovery-resiliency.md)
+ [Keamanan infrastruktur di Amazon DynamoDB](network-isolation.md)
+ [AWS PrivateLink untuk DynamoDB](privatelink-interface-endpoints.md)
+ [Analisis konfigurasi dan kerentanan di Amazon DynamoDB](configuration-vulnerability.md)
+ [Praktik Terbaik Keamanan untuk Amazon DynamoDB](best-practices-security.md)

# AWS kebijakan terkelola untuk Amazon DynamoDB
<a name="ddb-security-iam.awsmanpol"></a>

DynamoDB AWS menggunakan kebijakan terkelola untuk menentukan sekumpulan izin yang dibutuhkan layanan untuk melakukan tindakan tertentu. DynamoDB memelihara dan memperbarui AWS kebijakan yang dikelola. Anda tidak dapat mengubah izin dalam kebijakan AWS terkelola. Untuk informasi selengkapnya tentang kebijakan AWS [AWS terkelola, lihat kebijakan terkelola](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) di Panduan Pengguna IAM.

DynamoDB terkadang dapat menambahkan izin tambahan ke kebijakan terkelola untuk AWS mendukung fitur baru. Jenis pembaruan ini akan memengaruhi semua identitas (pengguna, grup, dan peran) di mana kebijakan tersebut dilampirkan. Kebijakan AWS terkelola kemungkinan besar akan diperbarui saat fitur baru diluncurkan atau saat operasi baru tersedia. DynamoDB tidak akan menghapus izin dari AWS kebijakan terkelola, sehingga pembaruan kebijakan tidak akan merusak izin yang ada. Untuk daftar lengkap kebijakan AWS terkelola, lihat [kebijakan AWS terkelola](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/policy-list.html).

## AWS kebijakan terkelola: Dynamo DBReplication ServiceRolePolicy
<a name="ddb-security-iam.awsmanpol.policy"></a>

Anda tidak dapat melampirkan kebijakan `DynamoDBReplicationServiceRolePolicy` ke entitas IAM Anda. Kebijakan ini dilampirkan ke peran tertaut layanan yang memungkinkan DynamoDB melakukan tindakan atas nama Anda. Untuk informasi selengkapnya, lihat [Menggunakan IAM dengan tabel global](globaltables-security.md).

Kebijakan ini memberikan izin yang memungkinkan peran tertaut layanan untuk melakukan replikasi data antara replika tabel global. Kebijakan ini juga memberikan izin administratif untuk mengelola replika tabel global atas nama Anda.

**Detail izin**

Kebijakan ini memberikan izin untuk melakukan hal berikut:
+ `dynamodb` – Melakukan replikasi data dan mengelola replika tabel.
+ `application-autoscaling`— Mengambil dan mengelola pengaturan Auto Scaling tabel
+ `account` – Mengambil status wilayah untuk mengevaluasi aksesibilitas replika.
+ `iam`— Untuk membuat peran terkait layanan untuk Auto Scaling aplikasi jika peran terkait layanan belum ada.

Definisi kebijakan yang dikelola ini dapat ditemukan [di sini](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/DynamoDBReplicationServiceRolePolicy.html).

## AWS kebijakan terkelola: AmazonDynamo DBFull Access\$1v2
<a name="ddb-security-iam.awsmanpol.fullaccesspolicy-v2"></a>

`AmazonDynamoDBFullAccess_v2`Kebijakan cakupan bawah memberikan hak akses khusus kepada pengguna. Anda dapat melampirkan kebijakan `AmazonDynamoDBFullAccess_v2` ke identitas IAM Anda. Kebijakan ini memberikan akses administratif ke sumber daya Amazon DynamoDB dan memberikan identitas IAM (seperti pengguna, grup, atau peran) akses ke DynamoDB yang terintegrasi dengannya untuk menggunakan Layanan AWS semua fitur DynamoDB. Menggunakan kebijakan ini memungkinkan akses ke semua fitur DynamoDB yang tersedia di. Konsol Manajemen AWS

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `Amazon DynamoDB`
+ `DynamoDB Accelerator`
+ `AWS KMS`
+ `AWS Resource Groups Tagging`
+ `Lambda`
+ `Application Auto Scaling`
+ `CloudWatch`
+ `Amazon Kinesis`
+ `Amazon EC2`
+ `IAM`

Untuk meninjau kebijakan dalam `JSON` format, lihat [AmazonDynamoDBFullAccess\$1v2](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess_v2.html).

## AWS kebijakan terkelola: AmazonDynamo DBRead OnlyAccess
<a name="ddb-security-iam.awsmanpol.readonlypolicy"></a>

Anda dapat melampirkan kebijakan `AmazonDynamoDBReadOnlyAccess` ke identitas IAM Anda.

Kebijakan ini memberikan akses hanya-baca ke Amazon DynamoDB.

**Detail izin**

Kebijakan ini mencakup izin berikut:
+ `Amazon DynamoDB`— Menyediakan akses read-only ke Amazon DynamoDB.
+ `Amazon DynamoDB Accelerator (DAX)`— Menyediakan akses read-only ke Amazon DynamoDB Accelerator (DAX).
+ `Application Auto Scaling`— Memungkinkan prinsipal untuk melihat konfigurasi dari Application Auto Scaling. Ini diperlukan agar pengguna dapat melihat kebijakan penskalaan otomatis yang dilampirkan ke tabel.
+ `CloudWatch`— Memungkinkan kepala sekolah untuk melihat data metrik dan alarm yang dikonfigurasi. CloudWatch Ini diperlukan agar pengguna dapat melihat ukuran tabel yang dapat ditagih dan CloudWatch alarm yang telah dikonfigurasi untuk tabel.
+ `AWS Data Pipeline`— Memungkinkan prinsipal untuk melihat AWS Data Pipeline dan objek terkait.
+ `Amazon EC2`— Memungkinkan kepala sekolah untuk melihat Amazon EC2 VPCs, subnet, dan grup keamanan.
+ `IAM`— Memungkinkan kepala sekolah untuk melihat peran IAM.
+ `AWS KMS`— Memungkinkan kepala sekolah untuk melihat kunci yang dikonfigurasi di. AWS KMS Ini diperlukan agar pengguna dapat melihat AWS KMS keys bahwa mereka membuat dan mengelola di akun mereka.
+ `Amazon SNS`— Memungkinkan kepala sekolah untuk mencantumkan topik dan langganan Amazon SNS berdasarkan topik.
+ `AWS Resource Groups`— Memungkinkan kepala sekolah untuk melihat grup sumber daya dan kueri mereka.
+ `AWS Resource Groups Tagging`— Memungkinkan prinsipal untuk mencantumkan semua sumber daya yang ditandai atau ditandai sebelumnya di suatu Wilayah.
+ `Kinesis`— Memungkinkan kepala sekolah untuk melihat deskripsi aliran data Kinesis.
+ `Amazon CloudWatch Contributor Insights`— Izinkan kepala sekolah untuk melihat data deret waktu yang dikumpulkan oleh aturan Contributor Insights.

Untuk meninjau kebijakan dalam `JSON` format, lihat [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html).

## DynamoDB memperbarui kebijakan terkelola AWS
<a name="ddb-security-iam.awsmanpol.updates"></a>

Tabel ini menunjukkan pembaruan kebijakan manajemen AWS akses untuk DynamoDB.


****  

| Ubah | Deskripsi | Tanggal Diubah | 
| --- | --- | --- | 
| AmazonDynamoDBFullAccess— Tidak digunakan lagi | Kebijakan ini telah digantikan oleh kebijakan tercakup bawah bernama. `AmazonDynamoDBFullAccess_v2` Setelah **April 2025**, Anda tidak dapat melampirkan `AmazonDynamoDBFullAccess` kebijakan ke pengguna, grup, atau peran baru mana pun. Untuk informasi selengkapnya, lihat [AWS kebijakan terkelola: AmazonDynamo DBFull Access\$1v2](#ddb-security-iam.awsmanpol.fullaccesspolicy-v2).  | April 28, 2025 | 
| Pembaruan AmazonDynamoDBReadOnlyAccess pada kebijakan yang sudah ada | AmazonDynamoDBReadOnlyAccessmenambahkan izin: dynamodb:GetAbacStatus dandynamodb:UpdateAbacStatus. Izin ini memungkinkan Anda untuk melihat status ABAC dan mengaktifkan ABAC untuk Wilayah Anda Akun AWS saat ini. | November 18, 2024 | 
| Pembaruan AmazonDynamoDBReadOnlyAccess pada kebijakan yang sudah ada | AmazonDynamoDBReadOnlyAccess menambahkan izin dynamodb:GetResourcePolicy. Izin ini menyediakan akses ke kebijakan berbasis sumber daya baca yang dilampirkan ke sumber daya DynamoDB. | Maret 20, 2024 | 
| Pembaruan DynamoDBReplicationServiceRolePolicy pada kebijakan yang sudah ada | DynamoDBReplicationServiceRolePolicy menambahkan izin dynamodb:GetResourcePolicy. Izin ini memungkinkan peran terkait layanan untuk membaca kebijakan berbasis sumber daya yang dilampirkan ke sumber daya DynamoDB. | 15 Desember 2023 | 
| Pembaruan DynamoDBReplicationServiceRolePolicy pada kebijakan yang sudah ada | DynamoDBReplicationServiceRolePolicy menambahkan izin account:ListRegions. Izin ini memungkinkan peran tertaut layanan dapat mengevaluasi aksesibilitas replika | 10 Mei 2023 | 
| DynamoDBReplicationServiceRolePolicy ditambahkan ke daftar kebijakan yang dikelola | Menambahkan informasi tentang kebijakan yang dikelola DynamoDBReplicationServiceRolePolicy, yang digunakan oleh peran tertaut layanan tabel global DynamoDB. | 10 Mei 2023 | 
| Tabel global DynamoDB mulai melacak perubahan | Tabel global DynamoDB mulai melacak perubahan untuk AWS kebijakan terkelolanya. | 10 Mei 2023 | 

# Menggunakan kebijakan berbasis sumber daya untuk DynamoDB
<a name="access-control-resource-based"></a>

DynamoDB mendukung kebijakan berbasis sumber daya untuk tabel, indeks, dan aliran. Kebijakan berbasis sumber daya memungkinkan Anda menentukan izin akses dengan menetapkan siapa yang memiliki akses ke setiap sumber daya, dan tindakan yang diizinkan untuk dilakukan pada setiap sumber daya.

Anda dapat melampirkan kebijakan berbasis sumber daya ke sumber daya DynamoDB, seperti tabel atau aliran. Dalam kebijakan ini, Anda menentukan izin untuk [prinsipal Identity and Access Management (IAM) dan Access Management (IAM) yang dapat melakukan tindakan tertentu pada sumber daya DynamoDB](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) ini. Misalnya, kebijakan yang dilampirkan pada tabel akan berisi izin untuk mengakses tabel dan indeksnya. Akibatnya, kebijakan berbasis sumber daya dapat membantu Anda menyederhanakan kontrol akses untuk tabel, indeks, dan aliran DynamoDB, dengan menentukan izin di tingkat sumber daya. Ukuran maksimum kebijakan yang dapat Anda lampirkan ke sumber daya DynamoDB adalah 20 KB.

Manfaat signifikan menggunakan kebijakan berbasis sumber daya adalah untuk menyederhanakan kontrol akses lintas akun untuk menyediakan akses lintas akun ke prinsip-prinsip IAM yang berbeda. Akun AWS Untuk informasi selengkapnya, lihat [Kebijakan berbasis sumber daya untuk akses lintas akun](rbac-examples.md#rbac-examples-cross-account).

[Kebijakan berbasis sumber daya juga mendukung integrasi dengan [IAM Access Analyzer external access analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) dan kemampuan Block Public Access (BPA).](rbac-bpa-rbp.md) IAM Access Analyzer melaporkan akses lintas akun ke entitas eksternal yang ditentukan dalam kebijakan berbasis sumber daya. Ini juga memberikan visibilitas untuk membantu Anda menyempurnakan izin dan menyesuaikan diri dengan prinsip hak istimewa paling sedikit. BPA membantu Anda mencegah akses publik ke tabel, indeks, dan aliran DynamoDB Anda, dan secara otomatis diaktifkan dalam alur kerja pembuatan dan modifikasi kebijakan berbasis sumber daya.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/q9sBxrVgq4U?si=0cR4TJIlKvH9Wlu5/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/q9sBxrVgq4U?si=0cR4TJIlKvH9Wlu5)


**Topics**
+ [Membuat tabel dengan kebijakan berbasis sumber daya](rbac-create-table.md)
+ [Melampirkan kebijakan ke tabel DynamoDB yang ada](rbac-attach-resource-based-policy.md)
+ [Melampirkan kebijakan berbasis sumber daya ke aliran DynamoDB](rbac-attach-resource-policy-streams.md)
+ [Menghapus kebijakan berbasis sumber daya dari tabel DynamoDB](rbac-delete-resource-based-policy.md)
+ [Akses lintas akun dengan kebijakan berbasis sumber daya di DynamoDB](rbac-cross-account-access.md)
+ [Memblokir akses publik dengan kebijakan berbasis sumber daya di DynamoDB](rbac-bpa-rbp.md)
+ [Operasi API DynamoDB didukung oleh kebijakan berbasis sumber daya](rbac-iam-actions.md)
+ [Otorisasi dengan kebijakan berbasis identitas IAM dan kebijakan berbasis sumber daya DynamoDB](rbac-auth-iam-id-based-policies-DDB.md)
+ [Contoh kebijakan berbasis sumber daya DynamoDB](rbac-examples.md)
+ [Pertimbangan kebijakan berbasis sumber daya DynamoDB](rbac-considerations.md)
+ [Praktik terbaik kebijakan berbasis sumber daya DynamoDB](rbac-best-practices.md)

# Membuat tabel dengan kebijakan berbasis sumber daya
<a name="rbac-create-table"></a>

[Anda dapat menambahkan kebijakan berbasis sumber daya saat membuat tabel menggunakan konsol DynamoDB, [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API, SDK, atau template. AWS CLIAWS](rbac-attach-resource-based-policy.md#rbac-attach-policy-java-sdk) CloudFormation 

## AWS CLI
<a name="rbac-create-table-CLI"></a>

Contoh berikut membuat tabel bernama *MusicCollection* menggunakan `create-table` AWS CLI perintah. Perintah ini juga menyertakan `resource-policy` parameter yang menambahkan kebijakan berbasis sumber daya ke tabel. Kebijakan ini memungkinkan pengguna *John* untuk melakukan tindakan [RestoreTableToPointInTime[GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html),, dan [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API pada tabel.

Ingatlah untuk mengganti *italicized* teks dengan informasi spesifik sumber daya Anda.

```
aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
    --resource-policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::123456789012:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:RestoreTableToPointInTime\",
                        \"dynamodb:GetItem\",
                        \"dynamodb:DescribeTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## Konsol Manajemen AWS
<a name="rbac-create-table-console"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol DynamoDB di. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1. Di dasbor, pilih **Buat tabel**.

1. Dalam **Rincian tabel**, masukkan nama tabel, kunci partisi, dan urutkan detail kunci.

1. Di **Pengaturan tabel**, pilih **Sesuaikan pengaturan**.

1. **(Opsional) Tentukan opsi Anda untuk **kelas Tabel**, **Kalkulator kapasitas**, **Pengaturan kapasitas baca/tulis**, **Indeks sekunder**, **Enkripsi saat istirahat**, dan Perlindungan penghapusan.**

1. Dalam **kebijakan berbasis sumber daya, tambahkan kebijakan** untuk menentukan izin akses untuk tabel dan indeksnya. Dalam kebijakan ini, Anda menentukan siapa yang memiliki akses ke sumber daya ini, dan tindakan yang diizinkan untuk dilakukan pada setiap sumber daya. Untuk menambahkan kebijakan, lakukan salah satu hal berikut:
   + Ketik atau tempel dokumen kebijakan JSON. Untuk detail tentang bahasa kebijakan IAM, lihat [Membuat kebijakan menggunakan editor JSON di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) Pengguna *IAM*.
**Tip**  
**Untuk melihat contoh kebijakan berbasis sumber daya di Panduan Pengembang Amazon DynamoDB, pilih Contoh kebijakan.**
   + Pilih **Tambahkan pernyataan baru** untuk menambahkan pernyataan baru dan masukkan informasi di bidang yang disediakan. Ulangi langkah ini sebanyak jumlah pernyataan yang ingin Anda tambahkan.
**penting**  
Pastikan Anda menyelesaikan peringatan, kesalahan, atau saran keamanan apa pun sebelum menyimpan kebijakan Anda.

   Contoh kebijakan IAM berikut memungkinkan pengguna *John* untuk melakukan tindakan [RestoreTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html), [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), dan [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API pada tabel*MusicCollection*.

   Ingatlah untuk mengganti *italicized* teks dengan informasi spesifik sumber daya Anda.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::123456789012:user/username"
         },
         "Action": [
           "dynamodb:RestoreTableToPointInTime",
           "dynamodb:GetItem",
           "dynamodb:PutItem"
         ],
         "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
       }
     ]
   }
   ```

------

1. (Opsional) Pilih **Pratinjau akses eksternal** di sudut kanan bawah untuk melihat bagaimana kebijakan baru memengaruhi publik dan akses lintas akun ke sumber daya Anda. Sebelum Anda menyimpan kebijakan Anda, Anda dapat memeriksa apakah itu memperkenalkan temuan Penganalisa Akses IAM baru atau menyelesaikan temuan yang ada. Jika Anda tidak melihat penganalisis aktif, pilih **Buka Penganalisis Akses** untuk [membuat penganalisis akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) di Penganalisis Akses IAM. Untuk informasi selengkapnya, lihat [Pratinjau akses](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

1. Pilih **Buat tabel**.

## AWS CloudFormation Template
<a name="rbac-create-table-cfn"></a>

------
#### [ Using the AWS::DynamoDB::Table resource ]

 CloudFormation Template berikut membuat tabel dengan aliran menggunakan sumber daya [AWS: :DynamoDB: :Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html). Template ini juga menyertakan kebijakan berbasis sumber daya yang dilampirkan ke tabel dan aliran.

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "MusicCollectionTable": {
            "Type": "AWS::DynamoDB::Table",
            "Properties": {
                "AttributeDefinitions": [
                    {
                        "AttributeName": "Artist",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "Artist",
                        "KeyType": "HASH"
                    }
                ],
                "BillingMode": "PROVISIONED",
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 5
                },
                "StreamSpecification": {
                  "StreamViewType": "OLD_IMAGE",
                  "ResourcePolicy": {
                    "PolicyDocument": {
                      "Version": "2012-10-17",		 	 	 
                      "Statement": [
                        {
                            "Principal": {
                                "AWS": "arn:aws:iam::111122223333:user/John"
                            },
                            "Effect": "Allow",
                            "Action": [
                                "dynamodb:GetRecords",
                                "dynamodb:GetShardIterator",
                                "dynamodb:DescribeStream"
                            ],
                            "Resource": "*"
                        }
                      ]
                    }
                  }
                },
                "TableName": "MusicCollection",
                "ResourcePolicy": {
                    "PolicyDocument": {
                        "Version": "2012-10-17",		 	 	 
                        "Statement": [
                            {
                                "Principal": {
                                    "AWS": [
                                        "arn:aws:iam::111122223333:user/John"
                                    ]
                                },
                                "Effect": "Allow",
                                "Action": "dynamodb:GetItem",
                                "Resource": "*"
                            }
                        ]
                    }
                }
            }
           
        }
    }
}
```

------
#### [ Using the AWS::DynamoDB::GlobalTable resource ]

 CloudFormation Template berikut membuat tabel dengan sumber daya [AWS: :DynamoDB::](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html) dan melampirkan kebijakan berbasis GlobalTable sumber daya ke tabel dan alirannya.

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "GlobalMusicCollection": {
            "Type": "AWS::DynamoDB::GlobalTable",
            "Properties": {
                "TableName": "MusicCollection",
                "AttributeDefinitions": [{
                    "AttributeName": "Artist",
                    "AttributeType": "S"
                }],
                "KeySchema": [{
                    "AttributeName": "Artist",
                    "KeyType": "HASH"
                }],
                "BillingMode": "PAY_PER_REQUEST",
                "StreamSpecification": {
                    "StreamViewType": "NEW_AND_OLD_IMAGES"
                },
                "Replicas": [
                    {
                        "Region": "us-east-1",
                        "ResourcePolicy": {
                            "PolicyDocument": {
                                "Version": "2012-10-17",		 	 	 
                                "Statement": [{
                                    "Principal": {
                                        "AWS": [
                                            "arn:aws:iam::111122223333:user/John"
                                        ]
                                    },
                                    "Effect": "Allow",
                                    "Action": "dynamodb:GetItem",
                                    "Resource": "*"
                                }]
                            }
                        },
                        "ReplicaStreamSpecification": {
                            "ResourcePolicy": {
                                "PolicyDocument": {
                                    "Version": "2012-10-17",		 	 	 
                                    "Statement": [{
                                        "Principal": {
                                            "AWS": "arn:aws:iam::111122223333:user/John"
                                        },
                                        "Effect": "Allow",
                                        "Action": [
                                            "dynamodb:GetRecords",
                                            "dynamodb:GetShardIterator",
                                            "dynamodb:DescribeStream"
                                        ],
                                        "Resource": "*"
                                    }]
                                }
                            }
                        }
                    }
                ]
            }
        }
    }
}
```

------

# Melampirkan kebijakan ke tabel DynamoDB yang ada
<a name="rbac-attach-resource-based-policy"></a>

[Anda dapat melampirkan kebijakan berbasis sumber daya ke tabel yang ada atau mengubah kebijakan yang ada menggunakan konsol DynamoDB, [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)API, SDK, atau templat. AWS CLIAWSCloudFormation](rbac-create-table.md#rbac-create-table-cfn)

## AWS CLI contoh untuk melampirkan kebijakan baru
<a name="rbac-attach-policy-CLI"></a>

Contoh kebijakan IAM berikut menggunakan `put-resource-policy` AWS CLI perintah untuk melampirkan kebijakan berbasis sumber daya ke tabel yang ada. Contoh ini memungkinkan pengguna *John* untuk melakukan tindakan [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html), dan [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)API pada tabel yang ada bernama*MusicCollection*.

Ingatlah untuk mengganti *italicized* teks dengan informasi spesifik sumber daya Anda.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetItem\",
                        \"dynamodb:PutItem\",
                        \"dynamodb:UpdateItem\",
                        \"dynamodb:UpdateTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## AWS CLI contoh untuk memperbarui kebijakan yang ada secara kondisional
<a name="rbac-update-policy-CLI"></a>

Untuk memperbarui kebijakan tabel berbasis sumber daya yang ada secara kondisional, Anda dapat menggunakan parameter opsional. `expected-revision-id` Contoh berikut hanya akan memperbarui kebijakan jika ada di DynamoDB dan ID revisi saat ini cocok dengan parameter yang disediakan. `expected-revision-id`

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --expected-revision-id 1709841168699 \ 
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetItem\",
                        \"dynamodb:UpdateItem\",
                        \"dynamodb:UpdateTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## Konsol Manajemen AWS
<a name="rbac-attach-policy-console"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol DynamoDB di. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1. Dari dasbor, pilih tabel yang ada.

1. Arahkan ke tab **Izin**, dan pilih **Buat kebijakan tabel**.

1. **Di editor kebijakan berbasis sumber daya, tambahkan kebijakan yang ingin dilampirkan dan pilih Buat kebijakan.**

   Contoh kebijakan IAM berikut memungkinkan pengguna *John* untuk melakukan tindakan [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html),, [PutItem[UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), dan [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)API pada tabel yang ada bernama*MusicCollection*.

   Ingatlah untuk mengganti *italicized* teks dengan informasi spesifik sumber daya Anda.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:user/username"
         },
         "Action": [
           "dynamodb:GetItem",
           "dynamodb:PutItem",
           "dynamodb:UpdateItem",
           "dynamodb:UpdateTable"
         ],
         "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
       }
     ]
   }
   ```

------

## AWS SDK for Java 2.x
<a name="rbac-attach-policy-java-sdk"></a>

Contoh kebijakan IAM berikut menggunakan `putResourcePolicy` metode untuk melampirkan kebijakan berbasis sumber daya ke tabel yang ada. Kebijakan ini memungkinkan pengguna untuk melakukan tindakan [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)API pada tabel yang ada.

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.PutResourcePolicyRequest;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * [Get started with the AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html)
 */
public class PutResourcePolicy {

    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <tableArn> <allowedAWSPrincipal>

                Where:
                    tableArn - The Amazon DynamoDB table ARN to attach the policy to. For example, arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection.
                    allowed AWS Principal - Allowed AWS principal ARN that the example policy will give access to. For example, arn:aws:iam::123456789012:user/John.
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String tableArn = args[0];
        String allowedAWSPrincipal = args[1];
        System.out.println("Attaching a resource-based policy to the Amazon DynamoDB table with ARN " +
                tableArn);
        Region region = Region.US_WEST_2;
        DynamoDbClient ddb = DynamoDbClient.builder()
                .region(region)
                .build();

        String result = putResourcePolicy(ddb, tableArn, allowedAWSPrincipal);
        System.out.println("Revision ID for the attached policy is " + result);
        ddb.close();
    }

    public static String putResourcePolicy(DynamoDbClient ddb, String tableArn, String allowedAWSPrincipal) {
        String policy = generatePolicy(tableArn, allowedAWSPrincipal);
        PutResourcePolicyRequest request = PutResourcePolicyRequest.builder()
                .policy(policy)
                .resourceArn(tableArn)
                .build();

        try {
            return ddb.putResourcePolicy(request).revisionId();
        } catch (DynamoDbException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }

        return "";
    }

    private static String generatePolicy(String tableArn, String allowedAWSPrincipal) {
        return "{\n" +
                "    \"Version\": \"2012-10-17\",\n" +,		 	 	 
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Effect\": \"Allow\",\n" +
                "            \"Principal\": {\"AWS\":\"" + allowedAWSPrincipal + "\"},\n" +
                "            \"Action\": [\n" +
                "                \"dynamodb:GetItem\"\n" +
                "            ],\n" +
                "            \"Resource\": \"" + tableArn + "\"\n" +
                "        }\n" +
                "    ]\n" +
                "}";
    }
}
```

# Melampirkan kebijakan berbasis sumber daya ke aliran DynamoDB
<a name="rbac-attach-resource-policy-streams"></a>

[Anda dapat melampirkan kebijakan berbasis sumber daya ke aliran tabel yang ada atau mengubah kebijakan yang ada menggunakan konsol DynamoDB, [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)API, SDK, atau templat. AWS CLIAWSCloudFormation](rbac-create-table.md#rbac-create-table-cfn)

**catatan**  
Anda tidak dapat melampirkan kebijakan ke aliran saat membuatnya menggunakan [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)atau [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) APIs. Namun, Anda dapat mengubah atau menghapus kebijakan setelah tabel dihapus. Anda juga dapat mengubah atau menghapus kebijakan aliran yang dinonaktifkan.



## AWS CLI
<a name="rbac-attach-policy-stream-CLI"></a>

Contoh kebijakan IAM berikut menggunakan `put-resource-policy` AWS CLI perintah untuk melampirkan kebijakan berbasis sumber daya ke aliran tabel bernama. *MusicCollection* Contoh ini memungkinkan pengguna *John* untuk melakukan tindakan [GetRecords[GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html),, dan [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)API di stream.

Ingatlah untuk mengganti *italicized* teks dengan informasi spesifik sumber daya Anda.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492 \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetRecords\",
                        \"dynamodb:GetShardIterator\",
                        \"dynamodb:DescribeStream\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492\"
                }
            ]
        }"
```

## Konsol Manajemen AWS
<a name="rbac-attach-policy-stream-console"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol DynamoDB di. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1. Pada dasbor konsol DynamoDB, **pilih Tabel dan kemudian pilih** tabel yang ada.

   Pastikan tabel yang Anda pilih memiliki aliran yang diaktifkan. Untuk informasi tentang mengaktifkan aliran untuk tabel, lihat[Mengaktifkan aliran](Streams.md#Streams.Enabling).

1. Pilih tab **Izin**.

1. **Dalam **kebijakan berbasis sumber daya untuk aliran aktif, pilih Buat kebijakan aliran**.**

1. Di editor **kebijakan berbasis Sumber Daya, tambahkan kebijakan** untuk menentukan izin akses untuk aliran. Dalam kebijakan ini, Anda menentukan siapa yang memiliki akses ke aliran dan tindakan yang diizinkan untuk dilakukan di streaming. Untuk menambahkan kebijakan, lakukan salah satu hal berikut:
   + Ketik atau tempel dokumen kebijakan JSON. Untuk detail tentang bahasa kebijakan IAM, lihat [Membuat kebijakan menggunakan editor JSON di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) Pengguna *IAM*.
**Tip**  
**Untuk melihat contoh kebijakan berbasis sumber daya di Panduan Pengembang Amazon DynamoDB, pilih Contoh kebijakan.**
   + Pilih **Tambahkan pernyataan baru** untuk menambahkan pernyataan baru dan masukkan informasi di bidang yang disediakan. Ulangi langkah ini sebanyak jumlah pernyataan yang ingin Anda tambahkan.
**penting**  
Pastikan Anda menyelesaikan peringatan, kesalahan, atau saran keamanan apa pun sebelum menyimpan kebijakan Anda.

1. (Opsional) Pilih **Pratinjau akses eksternal** di sudut kanan bawah untuk melihat bagaimana kebijakan baru memengaruhi publik dan akses lintas akun ke sumber daya Anda. Sebelum Anda menyimpan kebijakan Anda, Anda dapat memeriksa apakah itu memperkenalkan temuan Penganalisa Akses IAM baru atau menyelesaikan temuan yang ada. Jika Anda tidak melihat penganalisis aktif, pilih **Buka Penganalisis Akses** untuk [membuat penganalisis akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) di Penganalisis Akses IAM. Untuk informasi selengkapnya, lihat [Pratinjau akses](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

1. Pilih **Buat kebijakan**.

Contoh kebijakan IAM berikut melampirkan kebijakan berbasis sumber daya ke aliran tabel bernama. *MusicCollection* Contoh ini memungkinkan pengguna *John* untuk melakukan tindakan [GetRecords[GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html),, dan [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)API di stream.

Ingatlah untuk mengganti *italicized* teks dengan informasi spesifik sumber daya Anda.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/username"
      },
      "Action": [
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator",
        "dynamodb:DescribeStream"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492"
      ]
    }
  ]
}
```

------

# Menghapus kebijakan berbasis sumber daya dari tabel DynamoDB
<a name="rbac-delete-resource-based-policy"></a>

Anda dapat menghapus kebijakan berbasis sumber daya dari tabel yang ada dengan menggunakan konsol DynamoDB, [DeleteResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteResourcePolicy.html)API, SDK, atau templat. AWS CLI AWS CloudFormation 

## AWS CLI
<a name="rbac-delete-policy-CLI"></a>

Contoh berikut menggunakan `delete-resource-policy` AWS CLI perintah untuk menghapus kebijakan berbasis sumber daya dari tabel bernama. *MusicCollection*

Ingatlah untuk mengganti *italicized* teks dengan informasi spesifik sumber daya Anda.

```
aws dynamodb delete-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection
```

## Konsol Manajemen AWS
<a name="rbac-delete-policy-console"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol DynamoDB di. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1. Pada dasbor konsol DynamoDB, **pilih Tabel dan kemudian pilih** tabel yang ada.

1. Pilih **Izin**.

1. Dari menu tarik-turun **Kelola kebijakan**, pilih **Hapus** kebijakan.

1. Di kotak dialog **Hapus kebijakan berbasis sumber daya untuk tabel**, ketik **confirm** untuk mengonfirmasi tindakan penghapusan.

1. Pilih **Hapus**.

# Akses lintas akun dengan kebijakan berbasis sumber daya di DynamoDB
<a name="rbac-cross-account-access"></a>

Dengan menggunakan kebijakan berbasis sumber daya, Anda dapat memberikan akses lintas akun ke sumber daya yang tersedia di berbagai sumber daya. Akun AWS Semua akses lintas akun yang diizinkan oleh kebijakan berbasis sumber daya akan dilaporkan melalui temuan akses eksternal IAM Access Analyzer jika Anda memiliki penganalisis yang sama dengan sumber daya. Wilayah AWS Penganalisis Akses IAM menjalankan pemeriksaan kebijakan untuk memvalidasi kebijakan Anda terhadap [tata bahasa kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) IAM dan [praktik terbaik](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html). Pemeriksaan ini menghasilkan temuan dan memberikan rekomendasi yang dapat ditindaklanjuti untuk membantu Anda membuat kebijakan yang fungsional dan sesuai dengan praktik terbaik keamanan. [Anda dapat melihat temuan aktif dari IAM Access Analyzer di tab **Permissions** konsol DynamoDB.](https://console.aws.amazon.com/dynamodb/)

*Untuk informasi tentang memvalidasi kebijakan menggunakan IAM Access Analyzer, lihat [validasi kebijakan IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) di Panduan Pengguna IAM.* Untuk melihat daftar peringatan, kesalahan, dan saran yang ditampilkan oleh Penganalisis Akses IAM, lihat referensi pemeriksaan kebijakan [Penganalisis Akses IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

Untuk memberikan [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)izin kepada pengguna A di akun A untuk mengakses tabel B di akun B, lakukan langkah-langkah berikut:

1. Lampirkan kebijakan berbasis sumber daya ke tabel B yang memberikan izin kepada pengguna A untuk melakukan tindakan. `GetItem`

1. Lampirkan kebijakan berbasis identitas ke pengguna A yang memberinya izin untuk melakukan tindakan pada `GetItem` tabel B.

Menggunakan opsi **Pratinjau akses eksternal** yang tersedia di konsol [DynamoDB](https://console.aws.amazon.com/dynamodb/), Anda dapat melihat pratinjau bagaimana kebijakan baru memengaruhi akses publik dan lintas akun ke sumber daya Anda. Sebelum Anda menyimpan kebijakan Anda, Anda dapat memeriksa apakah itu memperkenalkan temuan Penganalisa Akses IAM baru atau menyelesaikan temuan yang ada. Jika Anda tidak melihat penganalisis aktif, pilih **Buka Penganalisis Akses** untuk [membuat penganalisis akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) di Penganalisis Akses IAM. Untuk informasi selengkapnya, lihat [Pratinjau akses](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

Parameter nama tabel di bidang data DynamoDB dan bidang kontrol APIs menerima Nama Sumber Daya Amazon (ARN) lengkap dari tabel untuk mendukung operasi lintas akun. Jika Anda hanya memberikan parameter nama tabel alih-alih ARN lengkap, operasi API akan dilakukan pada tabel di akun tempat pemohon berada. Untuk contoh kebijakan yang menggunakan akses lintas akun, lihat[Kebijakan berbasis sumber daya untuk akses lintas akun](rbac-examples.md#rbac-examples-cross-account).

Akun pemilik sumber daya akan dikenakan biaya bahkan ketika kepala sekolah dari akun lain membaca dari atau menulis ke tabel DynamoDB di akun pemilik. Jika tabel telah menyediakan throughput, jumlah semua permintaan dari akun pemilik dan pemohon di akun lain akan menentukan apakah permintaan akan dibatasi (jika penskalaan otomatis dinonaktifkan) atau diskalakan jika penskalaan otomatis diaktifkan. up/down 

Permintaan akan dicatat di CloudTrail log pemilik dan akun pemohon sehingga masing-masing dari dua akun dapat melacak akun mana yang mengakses data apa.

## Bagikan akses dengan fungsi AWS Lambda lintas akun
<a name="rbac-analyze-cross-account-lambda-access"></a>

**Fungsi Lambda di akun A**

1. Buka [konsol IAM untuk membuat peran IAM](https://console.aws.amazon.com/iam/) yang akan digunakan sebagai peran [eksekusi Lambda untuk fungsi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) Anda di akun A. Tambahkan kebijakan IAM terkelola yang memiliki izin pemanggilan AWS DynamoDB Streams dan Lambda `AWSLambdaDynamoDBExecutionRole` yang diperlukan. Kebijakan ini juga memberikan akses ke semua sumber daya DynamoDB Streams potensial yang mungkin dapat Anda akses di akun A.

1. Di [konsol Lambda](https://console.aws.amazon.com/lambda/), buat fungsi AWS Lambda untuk memproses catatan dalam aliran DynamoDB dan selama penyiapan untuk peran eksekusi, pilih peran yang Anda buat di langkah sebelumnya.

1. Berikan peran eksekusi fungsi Lambda kepada pemilik akun B DynamoDB Streams untuk mengonfigurasi kebijakan berbasis sumber daya untuk akses baca lintas akun.

1. Selesai mengatur fungsi Lambda.

**DynamoDB Stream di Akun B**

1. Dapatkan peran eksekusi Lambda lintas akun dari akun A yang akan memanggil fungsi Lambda.

1. Di konsol Amazon DynamoDB di akun B, pilih tabel untuk pemicu lintas akun Lambda. Di bawah tab **Ekspor dan aliran, cari ARN aliran** DynamoDB Anda. Pastikan status DynamoDB Stream Aktif dan catat ARN aliran penuh karena Anda akan memerlukannya untuk kebijakan sumber daya.

1. Di bawah tab **Izin**, klik tombol **buat kebijakan aliran** untuk memulai editor kebijakan visual. Klik tombol **Tambahkan pernyataan baru** atau edit kebijakan jika sudah ada.

1. Buat kebijakan yang menentukan peran eksekusi Lambda di akun A sebagai prinsipal dan berikan tindakan DynamoDB Stream yang diperlukan. Pastikan untuk memasukkan tindakan`dynamodb:DescribeStream`,, `dynamodb:GetRecords``dynamodb:GetShardIterator`, dan`dynamodb:ListShards`. [Untuk informasi selengkapnya tentang contoh kebijakan sumber daya untuk DynamoDB Streams, lihat contoh kebijakan berbasis sumber daya DynamoDB.](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html)

**catatan**  
Akses lintas akun [pesawat kontrol APIs](HowItWorks.API.md#HowItWorks.API.ControlPlane) memiliki batas transaksi per detik (TPS) yang lebih rendah dari 500 permintaan.

# Memblokir akses publik dengan kebijakan berbasis sumber daya di DynamoDB
<a name="rbac-bpa-rbp"></a>

[Blokir Akses Publik (BPA)](#rbac-bpa-rbp) [adalah fitur yang mengidentifikasi dan mencegah melampirkan kebijakan berbasis sumber daya yang memberikan akses publik ke tabel, indeks, atau aliran DynamoDB Anda di seluruh akun Amazon Web Services () Anda.AWS](https://aws.amazon.com/) Dengan BPA, Anda dapat mencegah akses publik ke sumber daya DynamoDB Anda. BPA melakukan pemeriksaan selama pembuatan atau modifikasi kebijakan berbasis sumber daya dan membantu meningkatkan postur keamanan Anda dengan DynamoDB.

BPA menggunakan [penalaran otomatis](https://aws.amazon.com/what-is/automated-reasoning/) untuk menganalisis akses yang diberikan oleh kebijakan berbasis sumber daya Anda dan memberi tahu Anda jika izin tersebut ditemukan pada saat mengelola kebijakan berbasis sumber daya. Analisis memverifikasi akses di semua pernyataan kebijakan berbasis sumber daya, tindakan, dan kumpulan kunci kondisi yang digunakan dalam kebijakan Anda.

**penting**  
BPA membantu melindungi sumber daya Anda dengan mencegah akses publik diberikan melalui kebijakan berbasis sumber daya yang langsung dilampirkan ke sumber daya DynamoDB Anda, seperti tabel, indeks, dan aliran. Selain menggunakan BPA, hati-hati memeriksa kebijakan berikut untuk mengonfirmasi bahwa mereka tidak memberikan akses publik:  
Kebijakan berbasis identitas yang dilampirkan pada AWS prinsipal terkait (misalnya, peran IAM)
Kebijakan berbasis sumber daya yang dilampirkan pada AWS sumber daya terkait (misalnya, kunci (KMS AWS Key Management Service ))

Anda harus memastikan bahwa [prinsipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) tidak menyertakan `*` entri atau bahwa salah satu kunci kondisi yang ditentukan membatasi akses dari prinsipal ke sumber daya. Jika kebijakan berbasis sumber daya memberikan akses publik ke tabel, indeks, atau streaming Anda, Akun AWS DynamoDB akan memblokir Anda dari membuat atau memodifikasi kebijakan hingga spesifikasi dalam kebijakan diperbaiki dan dianggap non-publik.

Anda dapat membuat kebijakan non-publik dengan menentukan satu atau lebih prinsipal di dalam blok. `Principal` Contoh kebijakan berbasis sumber daya berikut memblokir akses publik dengan menentukan dua prinsip.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "123456789012",
      "111122223333"
    ]
  },
  "Action": "dynamodb:*",
  "Resource": "*"
}
```

Kebijakan yang membatasi akses dengan menentukan kunci kondisi tertentu juga tidak dianggap publik. Seiring dengan evaluasi prinsipal yang ditentukan dalam kebijakan berbasis sumber daya, [kunci kondisi tepercaya](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) berikut digunakan untuk menyelesaikan evaluasi kebijakan berbasis sumber daya untuk akses non-publik:
+ `aws:PrincipalAccount`
+ `aws:PrincipalArn`
+ `aws:PrincipalOrgID`
+ `aws:PrincipalOrgPaths`
+ `aws:SourceAccount`
+ `aws:SourceArn`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserId`
+ `aws:PrincipalServiceName`
+ `aws:PrincipalServiceNamesList`
+ `aws:PrincipalIsAWSService`
+ `aws:Ec2InstanceSourceVpc`
+ `aws:SourceOrgID`
+ `aws:SourceOrgPaths`

Selain itu, agar kebijakan berbasis sumber daya bersifat non-publik, nilai untuk Amazon Resource Name (ARN) dan kunci string tidak boleh berisi wildcard atau variabel. Jika kebijakan berbasis sumber daya menggunakan `aws:PrincipalIsAWSService` kunci, Anda harus memastikan bahwa Anda telah menetapkan nilai kunci ke true.

Kebijakan berikut membatasi akses ke pengguna `John` di akun yang ditentukan. Kondisi tersebut membuat `Principal` terkendala dan tidak dianggap publik.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "*"
  },
  "Action": "dynamodb:*",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalArn": "arn:aws:iam::123456789012:user/John"
    }
  }
}
```

Contoh berikut dari kebijakan berbasis sumber daya non-publik kendala menggunakan operator. `sourceVPC` `StringEquals`

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "dynamodb:*",
      "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": [
            "vpc-91237329"
          ]
        }
      }
    }
  ]
}
```

------

# Operasi API DynamoDB didukung oleh kebijakan berbasis sumber daya
<a name="rbac-iam-actions"></a>

Topik ini mencantumkan operasi API yang didukung oleh kebijakan berbasis sumber daya. Namun, untuk akses lintas akun, Anda hanya dapat menggunakan serangkaian APIs DynamoDB tertentu melalui kebijakan berbasis sumber daya. Anda tidak dapat melampirkan kebijakan berbasis sumber daya ke jenis sumber daya, seperti pencadangan dan impor. Tindakan IAM, yang sesuai dengan APIs operasi pada jenis sumber daya ini, dikecualikan dari tindakan IAM yang didukung dalam kebijakan berbasis sumber daya. Karena administrator tabel mengonfigurasi setelan tabel internal dalam akun yang sama APIs, seperti [UpdateTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTimeToLive.html)dan [DisableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DisableKinesisStreamingDestination.html), tidak mendukung akses lintas akun melalui kebijakan berbasis sumber daya.

Bidang data DynamoDB dan APIs bidang kontrol yang mendukung akses lintas akun juga mendukung overloading nama tabel, yang memungkinkan Anda menentukan ARN tabel alih-alih nama tabel. Anda dapat menentukan tabel ARN dalam `TableName` parameter ini. APIs Namun, tidak semua ini APIs mendukung akses lintas akun.

**Topics**
+ [Operasi API bidang data](#rbac-data-plane-actions)
+ [Operasi API PartiQL](#rbac-partiql-actions)
+ [Kontrol operasi API pesawat](#rbac-control-plane-actions)
+ [Versi 2019.11.21 (Saat ini) operasi API tabel global](#rbac-current-global-table-actions)
+ [Versi 2017.11.29 (Legacy) tabel global operasi API](#rbac-legacy-global-table-actions)
+ [Tag operasi API](#rbac-tags-actions)
+ [Operasi Backup dan Restore API](#rbac-backup-restore-actions)
+ [Operasi API berkelanjutan Backup/Restore (PITR)](#rbac-continuous-backup-restore-actions)
+ [Operasi API Contributor Insights](#rbac-contributor-insights-actions)
+ [Ekspor operasi API](#rbac-export-actions)
+ [Impor operasi API](#rbac-import-actions)
+ [Operasi API Amazon Kinesis Data Streams](#rbac-kinesis-actions)
+ [Operasi API kebijakan berbasis sumber daya](#rbac-rbp-actions)
+ [Time-to-Live Operasi API](#rbac-ttl-actions)
+ [Operasi API lainnya](#rbac-other-actions)
+ [Operasi API DynamoDB Streams](#rbac-ds-actions)

## Operasi API bidang data
<a name="rbac-data-plane-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi API [bidang data](HowItWorks.API.md#HowItWorks.API.DataPlane) untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Pesawat Data - Tables/indexes APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [DeleteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)   | Ya | Ya | 
|   [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)   | Ya | Ya | 
|   [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)   | Ya | Ya | 
|   [Kueri](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html)   | Ya | Ya | 
|   [Scan](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html)   | Ya | Ya | 
|   [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)   | Ya | Ya | 
|   [TransactGetItems](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactGetItems.html)   | Ya | Ya | 
|   [TransactWriteItems](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactWriteItems.html)   | Ya | Ya | 
|   [BatchGetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html)   | Ya | Ya | 
|   [BatchWriteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html)   | Ya | Ya | 

## Operasi API PartiQL
<a name="rbac-partiql-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi API PartiQL untuk [kebijakan berbasis sumber daya](HowItWorks.API.md#HowItWorks.API.DataPlane.partiql) dan akses lintas akun.


| PartiQL APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [BatchExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchExecuteStatement.html)   | Ya | Tidak | 
|   [ExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html)   | Ya | Tidak | 
|   [ExecuteTransaction](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteTransaction.html)   | Ya | Tidak | 

## Kontrol operasi API pesawat
<a name="rbac-control-plane-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi API [bidang kontrol](HowItWorks.API.md#HowItWorks.API.ControlPlane) untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Control Plane - Tabel APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)   | Tidak | Tidak | 
|   [DeleteTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteTable.html)   | Ya | Ya | 
|   [DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html)   | Ya | Ya | 
|   [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)   | Ya | Ya | 

## Versi 2019.11.21 (Saat ini) operasi API tabel global
<a name="rbac-current-global-table-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh [Versi 2019.11.21 (Saat ini) operasi API tabel global](GlobalTables.md) untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Versi 2019.11.21 (Saat ini) tabel global APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [DescribeTableReplicaAutoScaling](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTableReplicaAutoScaling.html)   | Ya | Tidak | 
|   [UpdateTableReplicaAutoScaling](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTableReplicaAutoScaling.html)   | Ya | Tidak | 

## Versi 2017.11.29 (Legacy) tabel global operasi API
<a name="rbac-legacy-global-table-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh [Version 2017.11.29 (Legacy) operasi API tabel global](globaltables.V1.md) untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Versi 2017.11.29 (Legacy) tabel global APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [CreateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateGlobalTable.html)   | Tidak | Tidak | 
|   [DescribeGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTable.html)   | Tidak | Tidak | 
|   [DescribeGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTableSettings.html)   | Tidak | Tidak | 
|   [ListGlobalTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListGlobalTables.html)   | Tidak | Tidak | 
|   [UpdateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTable.html)   | Tidak | Tidak | 
|   [UpdateGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTableSettings.html)   | Tidak | Tidak | 

## Tag operasi API
<a name="rbac-tags-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi API yang terkait dengan [tag](Tagging.Operations.md) untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Tag APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [ListTagsOfResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTagsOfResource.html)   | Ya | Ya | 
|   [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)   | Ya | Ya | 
|   [UntagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UntagResource.html)   | Ya | Ya | 

## Operasi Backup dan Restore API
<a name="rbac-backup-restore-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi API yang terkait dengan [pencadangan dan pemulihan](Backup-and-Restore.md) untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Backup dan Restore APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [CreateBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateBackup.html)   | Ya | Tidak | 
|   [DescribeBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeBackup.html)   | Tidak | Tidak | 
|   [DeleteBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteBackup.html)   | Tidak | Tidak | 
|  [RestoreTableFromBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableFromBackup.html)  | Tidak | Tidak | 

## Operasi API berkelanjutan Backup/Restore (PITR)
<a name="rbac-continuous-backup-restore-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi API yang terkait dengan [Continuous Backup/Restore (PITR)](Point-in-time-recovery.md) untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Berkelanjutan Backup/Restore (PITR) APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [DescribeContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeContinuousBackups.html)   | Ya | Tidak | 
|   [RestoreTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html)   | Ya | Tidak | 
|   [UpdateContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContinuousBackups.html)   | Ya | Tidak | 

## Operasi API Contributor Insights
<a name="rbac-contributor-insights-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi API yang terkait dengan [Continuous Backup/Restore (PITR)](Point-in-time-recovery.md) untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Wawasan Kontributor APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [DescribeContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeContributorInsights.html)   | Ya | Tidak | 
|   [ListContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListContributorInsights.html)   | Tidak | Tidak | 
|   [UpdateContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContributorInsights.html)   | Ya | Tidak | 

## Ekspor operasi API
<a name="rbac-export-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi Export API untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Ekspor APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [DescribeExport](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeExport.html)   | Tidak | Tidak | 
|   [ExportTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExportTableToPointInTime.html)   | Ya | Tidak | 
|   [ListExports](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListExports.html)   | Tidak | Tidak | 

## Impor operasi API
<a name="rbac-import-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi Impor API untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Impor APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [DescribeImport](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeImport.html)   | Tidak | Tidak | 
|   [ImportTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ImportTable.html)   | Tidak | Tidak | 
|   [ListImports](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListImports.html)   | Tidak | Tidak | 

## Operasi API Amazon Kinesis Data Streams
<a name="rbac-kinesis-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi Kinesis Data Streams API untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Kinesis APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [DescribeKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeKinesisStreamingDestination.html)   | Ya | Tidak | 
|   [DisableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DisableKinesisStreamingDestination.html)   | Ya | Tidak | 
|   [EnableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_EnableKinesisStreamingDestination.html)   | Ya | Tidak | 
|   [UpdateKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateKinesisStreamingDestination.html)   | Ya | Tidak | 

## Operasi API kebijakan berbasis sumber daya
<a name="rbac-rbp-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi API kebijakan berbasis sumber daya untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Kebijakan berbasis sumber daya APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [GetResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetResourcePolicy.html)   | Ya | Tidak | 
|   [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)   | Ya | Tidak | 
|   [DeleteResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteResourcePolicy.html)   | Ya | Tidak | 

## Time-to-Live Operasi API
<a name="rbac-ttl-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi API [time to live](TTL.md) (TTL) untuk kebijakan berbasis sumber daya dan akses lintas akun.


| TTL APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [DescribeTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTimeToLive.html)   | Ya | Tidak | 
|   [UpdateTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTimeToLive.html)   | Ya | Tidak | 

## Operasi API lainnya
<a name="rbac-other-actions"></a>

Tabel berikut mencantumkan dukungan API-level yang disediakan oleh operasi API lainnya untuk kebijakan berbasis sumber daya dan akses lintas akun.


| Lainnya APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [DescribeLimits](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeLimits.html)   | Tidak | Tidak | 
|   [DescribeEndpoints](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeEndpoints.html)   | Tidak | Tidak | 
|   [ListBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListBackups.html)   | Tidak | Tidak | 
|   [ListTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTables.html)   | Tidak | Tidak | 

## Operasi API DynamoDB Streams
<a name="rbac-ds-actions"></a>

Tabel berikut mencantumkan dukungan tingkat API dari APIs DynamoDB Streams untuk kebijakan berbasis sumber daya dan akses lintas akun.


| DynamoDB Streams APIs | Dukungan kebijakan berbasis sumber daya | Dukungan lintas akun | 
| --- | --- | --- | 
|   [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)   | Ya | Ya | 
|   [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html)   | Ya | Ya | 
|   [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)   | Ya | Ya | 
|   [ListStreams](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_ListStreams.html)   | Tidak | Tidak | 

# Otorisasi dengan kebijakan berbasis identitas IAM dan kebijakan berbasis sumber daya DynamoDB
<a name="rbac-auth-iam-id-based-policies-DDB"></a>

**Kebijakan berbasis identitas** dilampirkan pada identitas, seperti pengguna IAM, grup pengguna, dan peran. Ini adalah dokumen kebijakan IAM yang mengontrol tindakan apa yang dapat dilakukan identitas, pada sumber daya mana, dan dalam kondisi apa. [Kebijakan berbasis identitas dapat [dikelola](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) atau kebijakan inline.](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies)

**Kebijakan berbasis sumber daya adalah dokumen kebijakan** IAM yang Anda lampirkan ke sumber daya, seperti tabel DynamoDB. Kebijakan ini memberikan izin prinsipal yang ditentukan untuk melakukan tindakan tertentu pada sumber daya tersebut dan menetapkan di bawah ketentuan yang berlaku. Misalnya, kebijakan berbasis sumber daya untuk tabel DynamoDB juga menyertakan indeks yang terkait dengan tabel. Kebijakan berbasis sumber daya merupakan kebijakan inline. Tidak ada kebijakan berbasis sumber daya terkelola.

*Untuk informasi selengkapnya tentang kebijakan ini, lihat Kebijakan [berbasis identitas dan kebijakan berbasis sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) di Panduan Pengguna IAM.*

Jika prinsipal IAM berasal dari akun yang sama dengan pemilik sumber daya, kebijakan berbasis sumber daya cukup untuk menentukan izin akses ke sumber daya. Anda masih dapat memilih untuk memiliki kebijakan berbasis identitas IAM bersama dengan kebijakan berbasis sumber daya. Untuk akses lintas akun, Anda harus secara eksplisit mengizinkan akses dalam kebijakan identitas dan sumber daya sebagaimana ditentukan dalam. [Akses lintas akun dengan kebijakan berbasis sumber daya di DynamoDB](rbac-cross-account-access.md) Saat Anda menggunakan kedua jenis kebijakan tersebut, kebijakan dievaluasi seperti yang dijelaskan dalam [Menentukan apakah permintaan diizinkan atau ditolak dalam akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

**penting**  
Jika kebijakan berbasis identitas memberikan akses tanpa syarat ke tabel DynamoDB (misalnya`dynamodb:GetItem`, tanpa kondisi), kebijakan berbasis sumber daya yang mengizinkan akses dengan kondisi tidak akan membatasi akses tersebut. `dynamodb:Attributes` Izin tanpa syarat kebijakan berbasis identitas diutamakan, dan kondisi kebijakan berbasis sumber daya tidak diterapkan sebagai pembatasan. Untuk membatasi akses ke atribut tertentu, gunakan pernyataan eksplisit alih-alih hanya mengandalkan `Deny` `Allow` pernyataan bersyarat dalam kebijakan berbasis sumber daya.

# Contoh kebijakan berbasis sumber daya DynamoDB
<a name="rbac-examples"></a>

Saat Anda menentukan ARN di `Resource` bidang kebijakan berbasis sumber daya, kebijakan akan berlaku hanya jika ARN yang ditentukan cocok dengan ARN sumber daya DynamoDB yang dilampirkan.

**catatan**  
Ingatlah untuk mengganti *italicized* teks dengan informasi spesifik sumber daya Anda.

## Kebijakan berbasis sumber daya untuk tabel
<a name="rbac-examples-get"></a>

Kebijakan berbasis sumber daya berikut yang dilampirkan ke tabel DynamoDB bernama*MusicCollection*, memberikan pengguna IAM dan izin untuk melakukan *John* dan *Jane* tindakan pada sumber daya. [GetItem[BatchGetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)*MusicCollection*

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "arn:aws:iam::111122223333:user/username",
            "arn:aws:iam::111122223333:user/Jane"
          ]
        },
        "Action": [
          "dynamodb:GetItem",
          "dynamodb:BatchGetItem"
        ],
        "Resource": [
          "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
        ]
    }
  ]
}
```

------

## Kebijakan berbasis sumber daya untuk aliran
<a name="rbac-examples-streams"></a>

Kebijakan berbasis sumber daya berikut yang dilampirkan ke aliran DynamoDB bernama `2024-02-12T18:57:26.492` memberikan pengguna IAM *John* dan *Jane* izin untuk melakukan [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html), serta tindakan API pada sumber daya. [GetShardIterator[DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)`2024-02-12T18:57:26.492`

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/username",
          "arn:aws:iam::111122223333:user/Jane"
        ]
      },
      "Action": [
        "dynamodb:DescribeStream",
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492"
      ]
    }
  ]
}
```

------

## Kebijakan berbasis sumber daya untuk akses untuk melakukan semua tindakan pada sumber daya tertentu
<a name="rbac-examples-wildcard"></a>

Untuk memungkinkan pengguna melakukan semua tindakan pada tabel dan semua indeks terkait dengan tabel, Anda dapat menggunakan wildcard (\$1) untuk mewakili tindakan dan sumber daya yang terkait dengan tabel. Menggunakan karakter wild card untuk sumber daya, akan memungkinkan pengguna mengakses tabel DynamoDB dan semua indeks terkait, termasuk yang belum dibuat. Misalnya, kebijakan berikut akan memberikan *John* izin kepada pengguna untuk melakukan tindakan apa pun di atas *MusicCollection* meja dan semua indeksnya, termasuk indeks apa pun yang akan dibuat di masa mendatang.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/role-name"
      },
      "Action": "dynamodb:*",
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/index/index-name"
      ]
    }
  ]
}
```

------

## Kebijakan berbasis sumber daya untuk akses lintas akun
<a name="rbac-examples-cross-account"></a>

Anda dapat menentukan izin untuk identitas IAM lintas akun untuk mengakses sumber daya DynamoDB. Misalnya, Anda mungkin memerlukan pengguna dari akun tepercaya untuk mendapatkan akses membaca konten tabel Anda, dengan syarat bahwa mereka hanya mengakses item tertentu dan atribut tertentu dalam item tersebut. Kebijakan berikut memungkinkan akses ke pengguna *John* dari Akun AWS ID tepercaya *111111111111* untuk mengakses data dari tabel di akun *123456789012* menggunakan [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)API. Kebijakan ini memastikan bahwa pengguna hanya dapat mengakses item dengan kunci utama *Jane* dan pengguna hanya dapat mengambil atribut `Artist` dan`SongTitle`, tetapi tidak ada atribut lainnya.

**penting**  
Jika Anda tidak menentukan `SPECIFIC_ATTRIBUTES` kondisi, Anda akan melihat semua atribut untuk item yang dikembalikan.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountTablePolicy",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/John"
            },
            "Action": "dynamodb:GetItem",
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": "Jane",
                    "dynamodb:Attributes": [
                        "Artist",
                        "SongTitle"
                    ]
                },
                "StringEquals": {
                    "dynamodb:Select": "SPECIFIC_ATTRIBUTES"
                }
            }
        }
    ]
}
```

------

Selain kebijakan berbasis sumber daya sebelumnya, kebijakan berbasis identitas yang dilampirkan pada pengguna *John* juga perlu mengizinkan tindakan API agar akses lintas akun berfungsi. `GetItem` Berikut ini adalah contoh kebijakan berbasis identitas yang harus Anda lampirkan ke pengguna. *John*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountIdentityBasedPolicy",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": "Jane",
                    "dynamodb:Attributes": [
                        "Artist",
                        "SongTitle"
                    ]
                },
                "StringEquals": {
                    "dynamodb:Select": "SPECIFIC_ATTRIBUTES"
                }
            }
        }
    ]
}
```

------

Pengguna John dapat membuat `GetItem` permintaan dengan menentukan tabel ARN dalam `table-name` parameter untuk mengakses *MusicCollection* tabel di akun. *123456789012*

```
aws dynamodb get-item \
    --table-name arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --key '{"Artist": {"S": "Jane"}' \
    --projection-expression 'Artist, SongTitle' \
    --return-consumed-capacity TOTAL
```

## Kebijakan berbasis sumber daya dengan kondisi alamat IP
<a name="rbac-examples-conditions"></a>

Anda dapat menerapkan kondisi untuk membatasi alamat IP sumber, virtual private cloud (VPCs), dan titik akhir VPC (VPCE). Anda dapat menentukan izin berdasarkan alamat sumber permintaan asal. Misalnya, Anda mungkin ingin mengizinkan pengguna mengakses sumber daya DynamoDB hanya jika mereka diakses dari sumber IP tertentu, seperti titik akhir VPN perusahaan. Tentukan alamat IP ini dalam `Condition` pernyataan.

Contoh berikut memungkinkan pengguna *John* mengakses sumber daya DynamoDB apa pun saat sumbernya IPs dan. `54.240.143.0/24` `2001:DB8:1234:5678::/64`

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

****  

```
{
  "Id":"PolicyId2",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AllowIPmix",
      "Effect":"Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:user/username"
      },
      "Action":"dynamodb:*",
      "Resource":"*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "54.240.143.0/24",
            "2001:DB8:1234:5678::/64"
          ]
        }
      }
    }
  ]
}
```

------

Anda juga dapat menolak semua akses ke sumber daya DynamoDB kecuali jika sumbernya adalah titik akhir VPC tertentu, misalnya. *vpce-1a2b3c4d*

**penting**  
Bila Anda menggunakan DAX dengan tabel DynamoDB yang memiliki kebijakan sumber daya berbasis IP IPv6 di lingkungan -only, Anda harus mengonfigurasi aturan akses tambahan. Jika kebijakan sumber daya membatasi akses ke ruang IPv4 alamat `0.0.0.0/0` pada tabel, Anda harus mengizinkan akses untuk peran IAM yang terkait dengan cluster DAX Anda. Tambahkan `ArnNotEquals` kondisi ke kebijakan Anda untuk memastikan DAX mempertahankan akses ke tabel DynamoDB Anda. Untuk informasi lebih lanjut lihat, [DAX dan IPv6](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.create-cluster.DAX_and_IPV6.html).

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

****  

```
{
  "Id":"PolicyId",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessToSpecificVPCEOnly",
      "Principal": "*",
      "Action": "dynamodb:*",
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringNotEquals":{
          "aws:sourceVpce":"vpce-1a2b3c4d"
        }
      }
    }
  ]
}
```

------

## Kebijakan berbasis sumber daya menggunakan peran IAM
<a name="rbac-examples-iam"></a>

Anda juga dapat menentukan peran layanan IAM dalam kebijakan berbasis sumber daya. Entitas IAM yang mengambil peran ini dibatasi oleh tindakan yang diizinkan yang ditentukan untuk peran dan kumpulan sumber daya tertentu dalam kebijakan berbasis sumber daya.

Contoh berikut memungkinkan entitas IAM untuk melakukan semua tindakan DynamoDB pada sumber daya dan DynamoDB. *MusicCollection* *MusicCollection*

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/role-name" },
      "Action": "dynamodb:*",
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/*"
      ]
    }
  ]
}
```

------

# Pertimbangan kebijakan berbasis sumber daya DynamoDB
<a name="rbac-considerations"></a>

Saat Anda menentukan kebijakan berbasis sumber daya untuk sumber daya DynamoDB Anda, pertimbangan berikut berlaku:

**Pertimbangan umum**
+ Ukuran maksimum yang didukung untuk dokumen kebijakan berbasis sumber daya adalah 20 KB. DynamoDB menghitung spasi putih saat menghitung ukuran kebijakan terhadap batas ini. 
+ Pembaruan kebijakan berikutnya untuk sumber daya tertentu diblokir selama 15 detik setelah pembaruan kebijakan berhasil untuk sumber daya yang sama.
+ Saat ini, Anda hanya dapat melampirkan kebijakan berbasis sumber daya ke aliran yang ada. Anda tidak dapat melampirkan kebijakan ke aliran saat membuatnya.

**Pertimbangan tabel global**
+ Kebijakan berbasis sumber daya tidak didukung untuk replika [versi tabel Global 2017.11.29](globaltables_HowItWorks.md) (Legacy).
+ Dalam kebijakan berbasis sumber daya, jika tindakan untuk DynamoDB service-linked role (SLR) untuk mereplikasi data untuk tabel global ditolak, menambahkan atau menghapus replika akan gagal dengan kesalahan.
+ GlobalTableSumber daya [AWS: :DynamoDB::](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html) tidak mendukung pembuatan replika dan menambahkan kebijakan berbasis sumber daya ke replika itu dalam pembaruan tumpukan yang sama di Wilayah selain Wilayah tempat Anda menerapkan pembaruan tumpukan.

**Pertimbangan lintas akun**
+ Akses lintas akun menggunakan kebijakan berbasis sumber daya tidak mendukung tabel terenkripsi dengan kunci AWS terkelola karena Anda tidak dapat memberikan akses lintas akun ke kebijakan KMS terkelola. AWS 

**CloudFormation pertimbangan**
+ [Kebijakan berbasis sumber daya tidak mendukung deteksi drift.](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html#) Jika Anda memperbarui kebijakan berbasis sumber daya di luar template AWS CloudFormation tumpukan, Anda harus memperbarui CloudFormation tumpukan dengan perubahan.
+ Kebijakan berbasis sumber daya tidak mendukung perubahan di luar band. Jika Anda menambahkan, memperbarui, atau menghapus kebijakan di luar CloudFormation templat, perubahan tidak akan ditimpa jika tidak ada perubahan pada kebijakan di dalam templat.

  Misalnya, katakan bahwa template Anda berisi kebijakan berbasis sumber daya yang kemudian Anda perbarui di luar templat. Jika Anda tidak membuat perubahan apa pun pada kebijakan di template, kebijakan yang diperbarui di DynamoDB tidak akan disinkronkan dengan kebijakan di templat.

  Sebaliknya, katakan bahwa template Anda tidak berisi kebijakan berbasis sumber daya, tetapi Anda menambahkan kebijakan di luar templat. Kebijakan ini tidak akan dihapus dari DynamoDB selama Anda tidak menambahkannya ke template. Saat Anda menambahkan kebijakan ke template dan memperbarui tumpukan, kebijakan yang ada di DynamoDB akan diperbarui agar sesuai dengan yang ditentukan dalam templat.

# Praktik terbaik kebijakan berbasis sumber daya DynamoDB
<a name="rbac-best-practices"></a>

Topik ini menjelaskan praktik terbaik untuk menentukan izin akses untuk sumber daya DynamoDB Anda dan tindakan yang diizinkan pada sumber daya ini.

## Sederhanakan kontrol akses ke sumber daya DynamoDB
<a name="rbac-simplify-access-control"></a>

Jika AWS Identity and Access Management prinsipal yang memerlukan akses ke sumber daya DynamoDB adalah bagian yang Akun AWS sama dengan pemilik sumber daya, kebijakan berbasis identitas IAM tidak diperlukan untuk setiap prinsipal. Kebijakan berbasis sumber daya yang melekat pada sumber daya yang diberikan sudah cukup. Jenis konfigurasi ini menyederhanakan kontrol akses.

## Lindungi sumber daya DynamoDB Anda dengan kebijakan berbasis sumber daya
<a name="rbac-protect"></a>

 Untuk semua tabel dan aliran DynamoDB, buat kebijakan berbasis sumber daya untuk menerapkan kontrol akses untuk sumber daya ini. Kebijakan berbasis sumber daya memungkinkan Anda memusatkan izin di tingkat sumber daya, menyederhanakan kontrol akses ke tabel DynamoDB, indeks, dan aliran, serta mengurangi overhead administrasi. Jika tidak ada kebijakan berbasis sumber daya yang ditentukan untuk tabel atau aliran, akses ke tabel atau aliran akan ditolak secara implisit, kecuali kebijakan berbasis identitas yang terkait dengan prinsip IAM mengizinkan akses.

## Terapkan izin hak istimewa paling sedikit
<a name="rbac-least-privilege"></a>

Saat Anda menetapkan izin dengan kebijakan berbasis sumber daya untuk sumber daya DynamoDB, berikan hanya izin yang diperlukan untuk melakukan tindakan. Anda melakukannya dengan mendefinisikan tindakan yang dapat diambil pada sumber daya tertentu dalam kondisi tertentu, yang juga dikenal sebagai izin dengan hak akses paling rendah. Anda dapat memulai dengan izin luas saat menjelajahi izin yang diperlukan untuk beban kerja atau kasus penggunaan Anda. Saat kasus penggunaan Anda matang, Anda dapat bekerja untuk mengurangi izin yang Anda berikan untuk bekerja menuju hak istimewa yang paling sedikit.

## Menganalisis aktivitas akses lintas akun untuk menghasilkan kebijakan hak istimewa paling sedikit
<a name="rbac-analyze-cross-account-access"></a>

IAM Access Analyzer melaporkan akses lintas akun ke entitas eksternal yang ditentukan dalam kebijakan berbasis sumber daya, dan memberikan visibilitas untuk membantu Anda menyempurnakan izin dan menyesuaikan diri dengan hak istimewa yang paling sedikit. Untuk informasi selengkapnya tentang pembuatan kebijakan, lihat pembuatan [kebijakan IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

## Gunakan IAM Access Analyzer untuk menghasilkan kebijakan hak istimewa paling sedikit
<a name="rbac-iam-access-analyzer"></a>

Untuk hanya memberikan izin yang diperlukan untuk melakukan tugas, Anda dapat membuat kebijakan berdasarkan aktivitas akses yang masuk AWS CloudTrail. IAM Access Analyzer menganalisis layanan dan tindakan yang digunakan kebijakan Anda.

# Menggunakan kontrol akses berbasis atribut dengan DynamoDB
<a name="attribute-based-access-control"></a>

[Kontrol akses berbasis atribut (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) adalah strategi otorisasi yang menentukan izin akses berdasarkan [kondisi tag](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html) dalam kebijakan berbasis identitas Anda atau kebijakan lain, seperti kebijakan berbasis sumber daya dan kebijakan IAM AWS organisasi. Anda dapat melampirkan tag ke tabel DynamoDB, yang kemudian dievaluasi terhadap kondisi berbasis tag. Indeks yang terkait dengan tabel mewarisi tanda yang Anda tambahkan ke tabel. Anda dapat menambahkan hingga 50 tag untuk setiap tabel DynamoDB. Ukuran maksimum yang didukung untuk semua tag dalam tabel adalah 10 KB. [Untuk informasi selengkapnya tentang menandai sumber daya DynamoDB dan pembatasan penandaan, lihat Menandai sumber daya di DynamoDB dan.](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.Operations.html) [Pembatasan penandaan di DynamoDB](Tagging.md#TaggingRestrictions)

Untuk informasi selengkapnya tentang penggunaan tag untuk mengontrol akses ke AWS sumber daya, lihat topik berikut di Panduan Pengguna IAM:
+ [Untuk apa ABAC AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)
+ [Mengontrol akses ke AWS sumber daya menggunakan tag](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)

Dengan ABAC, Anda dapat menerapkan tingkat akses yang berbeda-beda untuk tim dan aplikasi Anda guna melakukan tindakan pada tabel DynamoDB menggunakan lebih sedikit kebijakan. Anda dapat menentukan tag dalam [elemen kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) kebijakan IAM untuk mengontrol akses ke tabel atau indeks DynamoDB Anda. Kondisi ini menentukan tingkat akses yang dimiliki oleh prinsipal IAM, pengguna, atau peran, ke tabel dan indeks DynamoDB. Ketika prinsipal IAM membuat permintaan akses ke DynamoDB, tag sumber daya dan identitas dievaluasi terhadap kondisi tag dalam kebijakan IAM. Setelah itu, kebijakan menjadi efektif hanya jika kondisi tag terpenuhi. Ini memungkinkan Anda untuk membuat kebijakan IAM yang secara efektif mengatakan salah satu dari berikut ini:
+ *Izinkan pengguna untuk mengelola hanya sumber daya yang memiliki tag dengan kunci `X` dan nilai `Y`*.
+ *Tolak akses ke semua pengguna ke sumber daya yang ditandai dengan kunci `X`*.

Misalnya, Anda dapat membuat kebijakan yang memungkinkan pengguna memperbarui tabel hanya jika memiliki pasangan nilai kunci tag:. `"environment": "staging"` Anda dapat menggunakan kunci ResourceTag kondisi [aws:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) untuk mengizinkan atau menolak akses ke tabel berdasarkan tag yang dilampirkan ke tabel tersebut.

Anda dapat menyertakan kondisi berbasis atribut saat membuat kebijakan atau yang lebih baru menggunakan Konsol Manajemen AWS, AWS API, AWS Command Line Interface (AWS CLI), AWS SDK, atau. AWS CloudFormation

Contoh berikut memungkinkan [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)tindakan pada tabel bernama `MusicTable` jika menyertakan kunci tag dengan nama `environment` dan nilai`production`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:UpdateItem"
      ],
      "Resource": "arn:aws:dynamodb:*:*:table/MusicTable",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

**Topics**
+ [Mengapa saya harus menggunakan ABAC?](#why-use-abac)
+ [Kunci kondisi untuk mengimplementasikan ABAC dengan DynamoDB](#condition-keys-implement-abac)
+ [Pertimbangan untuk menggunakan ABAC dengan DynamoDB](#abac-considerations)
+ [Mengaktifkan ABAC di DynamoDB](abac-enable-ddb.md)
+ [Menggunakan ABAC dengan tabel dan indeks DynamoDB](abac-implementation-ddb-tables.md)
+ [Contoh untuk menggunakan ABAC dengan tabel dan indeks DynamoDB](abac-example-use-cases.md)
+ [Memecahkan masalah kesalahan ABAC umum untuk tabel dan indeks DynamoDB](abac-troubleshooting.md)

## Mengapa saya harus menggunakan ABAC?
<a name="why-use-abac"></a>
+ **Manajemen kebijakan yang lebih sederhana:** Anda menggunakan lebih sedikit kebijakan karena Anda tidak perlu membuat kebijakan yang berbeda untuk menentukan tingkat akses untuk setiap prinsipal IAM.
+ **Kontrol akses yang dapat diskalakan:** Menskalakan kontrol akses lebih mudah dengan ABAC karena Anda tidak perlu memperbarui kebijakan saat membuat sumber daya DynamoDB baru. Anda dapat menggunakan tag untuk mengotorisasi akses ke prinsipal IAM yang berisi tag yang cocok dengan tag sumber daya. Anda dapat menggunakan prinsipal IAM baru atau sumber daya DynamoDB dan menerapkan tag yang sesuai untuk secara otomatis memberikan izin yang diperlukan tanpa harus membuat perubahan kebijakan apa pun.
+ **Manajemen izin berbutir halus:** Merupakan praktik terbaik untuk [memberikan hak istimewa paling sedikit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) saat Anda membuat kebijakan. Menggunakan ABAC, Anda dapat membuat tag untuk prinsipal IAM, dan menggunakannya untuk memberikan akses ke tindakan dan sumber daya tertentu yang cocok dengan tag pada prinsipal IAM. 
+ **Penyelarasan dengan direktori perusahaan:** Anda dapat memetakan tag dengan atribut karyawan yang ada dari direktori perusahaan Anda untuk menyelaraskan kebijakan kontrol akses Anda dengan struktur organisasi Anda.

## Kunci kondisi untuk mengimplementasikan ABAC dengan DynamoDB
<a name="condition-keys-implement-abac"></a>

Anda dapat menggunakan kunci kondisi berikut dalam AWS kebijakan Anda untuk mengontrol tingkat akses ke tabel dan indeks DynamoDB Anda:
+ [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag): Mengontrol akses berdasarkan apakah pasangan nilai kunci tag pada tabel atau indeks DynamoDB cocok dengan kunci tag dan nilai dalam kebijakan. Kunci kondisi ini relevan dengan semua APIs yang beroperasi pada tabel atau indeks yang ada.

  `dynamodb:ResourceTag`Kondisi dievaluasi seolah-olah Anda tidak melampirkan tag apa pun ke sumber daya.
+ [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag): Memungkinkan membandingkan pasangan nilai kunci tag yang diteruskan dalam permintaan dengan pasangan tag yang Anda tentukan dalam kebijakan. Kunci kondisi ini relevan dengan APIs yang berisi tag sebagai bagian dari payload permintaan. Ini APIs termasuk [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)dan [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html).
+ [aws: TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys): Membandingkan kunci tag dalam permintaan dengan kunci yang Anda tentukan dalam kebijakan. Kunci kondisi ini relevan dengan APIs yang berisi tag sebagai bagian dari payload permintaan. Ini APIs termasuk`CreateTable`,`TagResource`, dan`UntagResource`.

## Pertimbangan untuk menggunakan ABAC dengan DynamoDB
<a name="abac-considerations"></a>

Bila Anda menggunakan ABAC dengan tabel atau indeks DynamoDB, pertimbangan berikut berlaku:
+ Penandaan dan ABAC tidak didukung untuk DynamoDB Streams.
+ Penandaan dan ABAC tidak didukung untuk backup DynamoDB. Untuk menggunakan ABAC dengan cadangan, kami sarankan Anda menggunakannya. [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html)
+ Tag tidak disimpan dalam tabel yang dipulihkan. Anda perlu menambahkan tag ke tabel yang dipulihkan sebelum dapat menggunakan kondisi berbasis tag dalam kebijakan Anda.

# Mengaktifkan ABAC di DynamoDB
<a name="abac-enable-ddb"></a>

Untuk sebagian besar Akun AWS, ABAC diaktifkan secara default. Menggunakan konsol [DynamoDB](https://console.aws.amazon.com/dynamodb/), Anda dapat mengonfirmasi apakah ABAC diaktifkan untuk akun Anda. [Untuk melakukan ini, pastikan Anda membuka konsol DynamoDB dengan peran yang memiliki izin dynamodb:. GetAbacStatus](#required-permissions-abac) Kemudian, buka halaman **Pengaturan** konsol DynamoDB.

**Jika Anda tidak melihat kartu **kontrol akses berbasis Atribut** atau jika kartu menampilkan status Aktif, itu berarti ABAC diaktifkan untuk akun Anda.** Namun, jika Anda melihat kartu **kontrol akses berbasis Atribut** dengan status **Mati**, seperti yang ditunjukkan pada gambar berikut, ABAC tidak diaktifkan untuk akun Anda.

## Kontrol akses berbasis atribut — tidak diaktifkan
<a name="abac-disabled-image"></a>

![\[Halaman pengaturan pada konsol DynamoDB yang menampilkan kartu kontrol akses berbasis Atribut.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/ddb-console-settings-page.png)


ABAC tidak diaktifkan Akun AWS untuk kondisi berbasis tag yang ditentukan dalam kebijakan berbasis identitas atau kebijakan lainnya masih perlu diaudit. Jika ABAC tidak diaktifkan untuk akun Anda, kondisi berbasis tag dalam kebijakan Anda yang dimaksudkan untuk bertindak pada tabel atau indeks DynamoDB akan dievaluasi seolah-olah tidak ada tag yang ada untuk sumber daya atau permintaan API Anda. Saat ABAC diaktifkan untuk akun Anda, kondisi berbasis tag dalam kebijakan akun Anda akan dievaluasi dengan mempertimbangkan tag yang dilampirkan pada tabel atau permintaan API Anda.

Untuk mengaktifkan ABAC untuk akun Anda, kami sarankan Anda terlebih dahulu mengaudit kebijakan Anda seperti yang dijelaskan di [Audit kebijakan](#policy-audit-for-abac) bagian ini. Kemudian, sertakan [izin yang diperlukan untuk ABAC dalam kebijakan](#required-permissions-abac) IAM Anda. Terakhir, lakukan langkah-langkah yang dijelaskan [Mengaktifkan ABAC di konsol](#abac-enable-console) untuk mengaktifkan ABAC untuk akun Anda di Wilayah saat ini. Setelah mengaktifkan ABAC, Anda dapat memilih keluar dalam tujuh hari kalender berikutnya setelah memilih.

**Topics**
+ [Mengaudit kebijakan Anda sebelum mengaktifkan ABAC](#policy-audit-for-abac)
+ [Izin IAM diperlukan untuk mengaktifkan ABAC](#required-permissions-abac)
+ [Mengaktifkan ABAC di konsol](#abac-enable-console)

## Mengaudit kebijakan Anda sebelum mengaktifkan ABAC
<a name="policy-audit-for-abac"></a>

Sebelum Anda mengaktifkan ABAC untuk akun Anda, audit kebijakan Anda untuk mengonfirmasi bahwa kondisi berbasis tag yang mungkin ada dalam kebijakan dalam akun Anda diatur sebagaimana dimaksud. Mengaudit kebijakan Anda akan membantu menghindari kejutan dari perubahan otorisasi dengan alur kerja DynamoDB Anda setelah ABAC diaktifkan. Untuk melihat contoh penggunaan kondisi berbasis atribut dengan tag, dan perilaku sebelum dan sesudah implementasi ABAC, lihat. [Contoh untuk menggunakan ABAC dengan tabel dan indeks DynamoDBContoh kasus penggunaan](abac-example-use-cases.md)

## Izin IAM diperlukan untuk mengaktifkan ABAC
<a name="required-permissions-abac"></a>

Anda memerlukan `dynamodb:UpdateAbacStatus` izin untuk mengaktifkan ABAC untuk akun Anda di Wilayah saat ini. Untuk mengonfirmasi apakah ABAC diaktifkan untuk akun Anda, Anda juga harus memiliki `dynamodb:GetAbacStatus` izin. Dengan izin ini, Anda dapat melihat status ABAC untuk akun di Wilayah mana pun. Anda memerlukan izin ini selain izin yang diperlukan untuk mengakses konsol DynamoDB.

Kebijakan IAM berikut memberikan izin untuk mengaktifkan ABAC dan melihat statusnya untuk akun di Wilayah saat ini.

```
{
"version": "2012-10-17", 		 	 	 &TCX5-2025-waiver;
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateAbacStatus",
                "dynamodb:GetAbacStatus"
             ],
            "Resource": "*"
        }
    ]
}
```

## Mengaktifkan ABAC di konsol
<a name="abac-enable-console"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol DynamoDB di. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1. Dari panel navigasi atas, pilih Wilayah yang ingin Anda aktifkan ABAC.

1. Di panel navigasi kiri, pilih **Pengaturan**.

1. Pada halaman **Pengaturan**, lakukan hal berikut:

   1. **Di kartu **kontrol akses berbasis atribut**, pilih Aktifkan.**

   1. Di kotak **pengaturan kontrol akses berbasis atribut Konfirmasi**, pilih **Aktifkan** untuk mengonfirmasi pilihan Anda.

      **Ini memungkinkan ABAC untuk Wilayah saat ini dan kartu **kontrol akses berbasis Atribut** menunjukkan status Aktif.**

      Jika Anda ingin memilih keluar setelah mengaktifkan ABAC di konsol, Anda dapat melakukannya dalam tujuh hari kalender berikutnya setelah memilih. Untuk memilih keluar, pilih **Nonaktifkan** di kartu **kontrol akses berbasis** Atribut di halaman **Pengaturan**.
**catatan**  
Memperbarui status ABAC adalah operasi asinkron. Jika tag dalam kebijakan Anda tidak segera dievaluasi, Anda mungkin perlu menunggu beberapa saat karena penerapan perubahan pada akhirnya konsisten.

# Menggunakan ABAC dengan tabel dan indeks DynamoDB
<a name="abac-implementation-ddb-tables"></a>

Langkah-langkah berikut menunjukkan cara mengatur izin menggunakan ABAC. Dalam skenario contoh ini, Anda akan menambahkan tag ke tabel DynamoDB dan membuat peran IAM dengan kebijakan yang menyertakan kondisi berbasis tag. Kemudian, Anda akan menguji izin yang diizinkan pada tabel DynamoDB dengan mencocokkan kondisi tag.

**Topics**
+ [Langkah 1: Tambahkan tag ke tabel DynamoDB](#abac-add-table-tags)
+ [Langkah 2: Buat peran IAM dengan kebijakan termasuk kondisi berbasis tag](#abac-create-iam-role)
+ [Langkah 3: Uji izin yang diizinkan](#abac-test-permissions)

## Langkah 1: Tambahkan tag ke tabel DynamoDB
<a name="abac-add-table-tags"></a>

Anda dapat menambahkan tag ke tabel DynamoDB baru atau yang sudah ada menggunakan Konsol Manajemen AWS AWS , API,AWS CLI() AWS Command Line Interface , SDK AWS , atau. AWS CloudFormation Misalnya, perintah [CLI tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) berikut menambahkan tag ke tabel bernama. `MusicTable`

```
aws dynamodb tag-resource —resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicTable —tags Key=environment,Value=staging
```

## Langkah 2: Buat peran IAM dengan kebijakan termasuk kondisi berbasis tag
<a name="abac-create-iam-role"></a>

[Buat kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) menggunakan [ResourceTagkunci kondisi aws: /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) untuk membandingkan pasangan nilai kunci tag yang ditentukan dalam kebijakan IAM dengan pasangan kunci-nilai yang dilampirkan ke tabel. Contoh kebijakan berikut memungkinkan pengguna untuk menempatkan atau memperbarui item dalam tabel jika tabel ini berisi pasangan nilai kunci tag:. `"environment": "staging"` Jika tabel tidak memiliki pasangan nilai kunci tag yang ditentukan, tindakan ini ditolak.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/environment": "staging"
                }
            }
        }
    ]
}
```

------

## Langkah 3: Uji izin yang diizinkan
<a name="abac-test-permissions"></a>

1. Lampirkan kebijakan IAM ke pengguna pengujian atau peran di Anda Akun AWS. Pastikan bahwa prinsipal IAM yang Anda gunakan belum memiliki akses ke tabel DynamoDB melalui kebijakan yang berbeda.

1. Pastikan tabel DynamoDB Anda berisi `"environment"` kunci tag dengan nilai. `"staging"`

1. Lakukan `dynamodb:PutItem` dan `dynamodb:UpdateItem` tindakan pada tabel yang ditandai. Tindakan ini akan berhasil jika pasangan nilai kunci `"environment": "staging"` tag hadir.

   Jika Anda melakukan tindakan ini pada tabel yang tidak memiliki pasangan nilai kunci `"environment": "staging"` tag, permintaan Anda akan gagal dengan. `AccessDeniedException`

Anda juga dapat meninjau [kasus penggunaan sampel](abac-example-use-cases.md) lainnya yang dijelaskan di bagian berikut untuk menerapkan ABAC dan melakukan lebih banyak pengujian.

# Contoh untuk menggunakan ABAC dengan tabel dan indeks DynamoDB
<a name="abac-example-use-cases"></a>

Contoh berikut menggambarkan beberapa kasus penggunaan untuk mengimplementasikan kondisi berbasis atribut menggunakan tag.

**Topics**
+ [Contoh 1: Izinkan tindakan menggunakan aws: ResourceTag](#abac-allow-example-resource-tag)
+ [Contoh 2: Izinkan tindakan menggunakan aws: RequestTag](#abac-allow-example-request-tag)
+ [Contoh 3: Tolak tindakan menggunakan aws: TagKeys](#abac-deny-example-tag-key)

## Contoh 1: Izinkan tindakan menggunakan aws: ResourceTag
<a name="abac-allow-example-resource-tag"></a>

Dengan menggunakan kunci `aws:ResourceTag/tag-key` kondisi, Anda dapat membandingkan pasangan nilai kunci tag yang ditentukan dalam kebijakan IAM dengan pasangan nilai kunci yang dilampirkan dalam tabel DynamoDB. Misalnya, Anda dapat mengizinkan tindakan tertentu, seperti [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), jika kondisi tag cocok dengan kebijakan IAM dan tabel. Untuk melakukan ini, lakukan langkah-langkah berikut:

------
#### [ Using the AWS CLI ]

1. Buat tabel. Contoh berikut menggunakan AWS CLI perintah [create-table](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html) untuk membuat tabel bernama. `myMusicTable`

   ```
   aws dynamodb create-table \
     --table-name myMusicTable \
     --attribute-definitions AttributeName=id,AttributeType=S \
     --key-schema AttributeName=id,KeyType=HASH \
     --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
     --region us-east-1
   ```

1. Tambahkan tag ke tabel ini. Contoh AWS CLI perintah [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) berikut menambahkan pasangan nilai kunci tag ke. `Title: ProductManager` `myMusicTable`

   ```
   aws dynamodb tag-resource --region us-east-1 --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable --tags Key=Title,Value=ProductManager
   ```

1. Buat [kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) dan tambahkan ke peran yang memiliki kebijakan [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS terkelola yang dilampirkan padanya, seperti yang ditunjukkan pada contoh berikut.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "dynamodb:PutItem",
         "Resource": "arn:aws:dynamodb:*:*:table/*",
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/Title": "ProductManager"
           }
         }
       }
     ]
   }
   ```

------

   Kebijakan ini memungkinkan `PutItem` tindakan pada tabel jika kunci tag dan nilai yang dilampirkan ke tabel cocok dengan tag yang ditentukan dalam kebijakan.

1. Asumsikan peran dengan kebijakan yang dijelaskan dalam Langkah 3.

1. Gunakan AWS CLI perintah [put-item](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html) untuk menempatkan item ke. `myMusicTable`

   ```
   aws dynamodb put-item \
       --table-name myMusicTable --region us-east-1 \
       --item '{
           "id": {"S": "2023"},
           "title": {"S": "Happy Day"},
           "info": {"M": {
               "rating": {"N": "9"},
               "Artists": {"L": [{"S": "Acme Band"}, {"S": "No One You Know"}]},
               "release_date": {"S": "2023-07-21"}
           }}
       }'
   ```

1. Pindai tabel untuk memverifikasi apakah item telah ditambahkan ke tabel.

   ```
   aws dynamodb scan --table-name myMusicTable  --region us-east-1
   ```

------
#### [ Using the AWS SDK for Java 2.x ]

1. Buat tabel. Contoh berikut menggunakan [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API untuk membuat tabel bernama`myMusicTable`.

   ```
   DynamoDbClient dynamoDB = DynamoDbClient.builder().region(region).build();
   CreateTableRequest createTableRequest = CreateTableRequest.builder()
       .attributeDefinitions(
           Arrays.asList(
               AttributeDefinition.builder()
               .attributeName("id")
               .attributeType(ScalarAttributeType.S)
               .build()
           )
       )
       .keySchema(
           Arrays.asList(
               KeySchemaElement.builder()
               .attributeName("id")
               .keyType(KeyType.HASH)
               .build()
           )
       )
       .provisionedThroughput(ProvisionedThroughput.builder()
           .readCapacityUnits(5L)
           .writeCapacityUnits(5L)
           .build()
       )
       .tableName("myMusicTable")
       .build();
   
   CreateTableResponse createTableResponse = dynamoDB.createTable(createTableRequest);
   String tableArn = createTableResponse.tableDescription().tableArn();
   String tableName = createTableResponse.tableDescription().tableName();
   ```

1. Tambahkan tag ke tabel ini. [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)API dalam contoh berikut menambahkan pasangan nilai kunci tag `Title: ProductManager` ke. `myMusicTable`

   ```
   TagResourceRequest tagResourceRequest = TagResourceRequest.builder()
       .resourceArn(tableArn)
       .tags(
           Arrays.asList(
               Tag.builder()
               .key("Title")
               .value("ProductManager")
               .build()
           )
       )
       .build();
   dynamoDB.tagResource(tagResourceRequest);
   ```

1. Buat [kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) dan tambahkan ke peran yang memiliki kebijakan [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS terkelola yang dilampirkan padanya, seperti yang ditunjukkan pada contoh berikut.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "dynamodb:PutItem",
         "Resource": "arn:aws:dynamodb:*:*:table/*",
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/Title": "ProductManager"
           }
         }
       }
     ]
   }
   ```

------

   Kebijakan ini memungkinkan `PutItem` tindakan pada tabel jika kunci tag dan nilai yang dilampirkan ke tabel cocok dengan tag yang ditentukan dalam kebijakan.

1. Asumsikan peran dengan kebijakan yang dijelaskan dalam Langkah 3.

1. Gunakan [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API untuk menempatkan item ke file`myMusicTable`.

   ```
   HashMap<String, AttributeValue> info = new HashMap<>();
   info.put("rating", AttributeValue.builder().s("9").build());
   info.put("artists", AttributeValue.builder().ss(List.of("Acme Band","No One You Know").build());
   info.put("release_date", AttributeValue.builder().s("2023-07-21").build());
   
   HashMap<String, AttributeValue> itemValues = new HashMap<>();
   itemValues.put("id", AttributeValue.builder().s("2023").build());
   itemValues.put("title", AttributeValue.builder().s("Happy Day").build());
   itemValues.put("info", AttributeValue.builder().m(info).build());
   
   
   PutItemRequest putItemRequest = PutItemRequest.builder()
                   .tableName(tableName)
                   .item(itemValues)
                   .build();
   dynamoDB.putItem(putItemRequest);
   ```

1. Pindai tabel untuk memverifikasi apakah item telah ditambahkan ke tabel.

   ```
   ScanRequest scanRequest = ScanRequest.builder()
                   .tableName(tableName)
                   .build();
                   
   ScanResponse scanResponse = dynamoDB.scan(scanRequest);
   ```

------
#### [ Using the AWS SDK untuk Python (Boto3) ]

1. Buat tabel. Contoh berikut menggunakan [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API untuk membuat tabel bernama`myMusicTable`.

   ```
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 5,
           'WriteCapacityUnits': 5
       },
   )
   
   table_arn = create_table_response['TableDescription']['TableArn']
   ```

1. Tambahkan tag ke tabel ini. [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)API dalam contoh berikut menambahkan pasangan nilai kunci tag `Title: ProductManager` ke. `myMusicTable`

   ```
   tag_resouce_response = ddb_client.tag_resource(
       ResourceArn=table_arn,
       Tags=[
           {
               'Key': 'Title',
               'Value': 'ProductManager'
           },
       ]
   )
   ```

1. Buat [kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) dan tambahkan ke peran yang memiliki kebijakan [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS terkelola yang dilampirkan padanya, seperti yang ditunjukkan pada contoh berikut.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
           "Effect": "Allow",
           "Action": "dynamodb:PutItem",
           "Resource": "arn:aws:dynamodb:*:*:table/*",
           "Condition": {
               "StringEquals": {
               "aws:ResourceTag/Title": "ProductManager"
               }
           }
           }
       ]
       }
   ```

------

   Kebijakan ini memungkinkan `PutItem` tindakan pada tabel jika kunci tag dan nilai yang dilampirkan ke tabel cocok dengan tag yang ditentukan dalam kebijakan.

1. Asumsikan peran dengan kebijakan yang dijelaskan dalam Langkah 3.

1. Gunakan [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API untuk menempatkan item ke file`myMusicTable`.

   ```
   put_item_response = client.put_item(
       TableName = 'myMusicTable'
       Item = {
           'id': '2023',
           'title': 'Happy Day',
           'info': {
               'rating': '9',
               'artists': ['Acme Band','No One You Know'],
               'release_date': '2023-07-21'
           }
       }
   )
   ```

1. Pindai tabel untuk memverifikasi apakah item telah ditambahkan ke tabel.

   ```
   scan_response = client.scan(
       TableName='myMusicTable'
   )
   ```

------

**Tanpa ABAC**  
Jika ABAC tidak diaktifkan untuk Anda Akun AWS, kondisi tag dalam kebijakan IAM dan tabel DynamoDB tidak cocok. Akibatnya, `PutItem` tindakan mengembalikan `AccessDeniedException` karena efek `AmazonDynamoDBReadOnlyAccess` kebijakan.

```
An error occurred (AccessDeniedException) when calling the PutItem operation: User: arn:aws:sts::123456789012:assumed-role/DynamoDBReadOnlyAccess/Alice is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:PutItem action.
```

**Dengan ABAC**  
Jika ABAC diaktifkan untuk Anda Akun AWS, `put-item` tindakan berhasil diselesaikan dan menambahkan item baru ke tabel Anda. Hal ini karena kebijakan inline pada tabel memungkinkan `PutItem` tindakan jika kondisi tag dalam kebijakan IAM dan tabel cocok.

## Contoh 2: Izinkan tindakan menggunakan aws: RequestTag
<a name="abac-allow-example-request-tag"></a>

Dengan menggunakan [RequestTagkunci kondisi aws: /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), Anda dapat membandingkan pasangan nilai kunci tag yang diteruskan dalam permintaan Anda dengan pasangan tag yang ditentukan dalam kebijakan IAM. Misalnya, Anda dapat mengizinkan tindakan tertentu, seperti`CreateTable`, menggunakan `aws:RequestTag` jika kondisi tag tidak cocok. Untuk melakukan ini, lakukan langkah-langkah berikut:

------
#### [ Using the AWS CLI ]

1. Buat [kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) dan tambahkan ke peran yang memiliki kebijakan [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ReadOnlyAccess.html) AWS terkelola yang dilampirkan padanya, seperti yang ditunjukkan pada contoh berikut.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Owner": "John"
                   }
               }
           }
       ]
   }
   ```

------

1. Buat tabel yang berisi pasangan nilai kunci tag dari. `"Owner": "John"`

   ```
   aws dynamodb create-table \
   --attribute-definitions AttributeName=ID,AttributeType=S \
   --key-schema AttributeName=ID,KeyType=HASH  \
   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \
   --region us-east-1 \
   --tags Key=Owner,Value=John \
   --table-name myMusicTable
   ```

------
#### [ Using the AWS SDK untuk Python (Boto3) ]

1. Buat [kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) dan tambahkan ke peran yang memiliki kebijakan [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS terkelola yang dilampirkan padanya, seperti yang ditunjukkan pada contoh berikut.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Owner": "John"
                   }
               }
           }
       ]
   }
   ```

------

1. Buat tabel yang berisi pasangan nilai kunci tag dari. `"Owner": "John"`

   ```
   ddb_client = boto3.client('dynamodb')
   
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 1000,
           'WriteCapacityUnits': 500
       },
       Tags=[
           {
               'Key': 'Owner',
               'Value': 'John'
           },
       ],
   )
   ```

------

**Tanpa ABAC**  
Jika ABAC tidak diaktifkan untuk Anda Akun AWS, kondisi tag dalam kebijakan sebaris dan tabel DynamoDB tidak cocok. Akibatnya, `CreateTable` permintaan gagal dan tabel Anda tidak dibuat.

```
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/Admin/John is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:CreateTable action.
```

**Dengan ABAC**  
Jika ABAC diaktifkan untuk Anda Akun AWS, permintaan pembuatan tabel Anda berhasil diselesaikan. Karena pasangan nilai kunci tag `"Owner": "John"` hadir dalam `CreateTable` permintaan, kebijakan inline memungkinkan pengguna `John` untuk melakukan tindakan. `CreateTable`

## Contoh 3: Tolak tindakan menggunakan aws: TagKeys
<a name="abac-deny-example-tag-key"></a>

Menggunakan [aws: TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) condition key, Anda dapat membandingkan kunci tag dalam permintaan dengan kunci yang ditentukan dalam kebijakan IAM. Misalnya, Anda dapat menolak tindakan tertentu, seperti`CreateTable`, menggunakan `aws:TagKeys` jika kunci tag tertentu *tidak* ada dalam permintaan. Untuk melakukan ini, lakukan langkah-langkah berikut:

------
#### [ Using the AWS CLI ]

1. Tambahkan [kebijakan terkelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) ke peran yang memiliki kebijakan AWS terkelola [AmazonDynamoDBFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html) yang dilampirkan padanya, seperti yang ditunjukkan pada contoh berikut.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "Null": {
                       "aws:TagKeys": "false"
                   },
                   "ForAllValues:StringNotEquals": {
                       "aws:TagKeys": "CostCenter"
                   }
               }
           }
       ]
   }
   ```

------

1. Asumsikan peran yang dilampirkan kebijakan, dan buat tabel dengan kunci tag`Title`.

   ```
   aws dynamodb create-table \
   --attribute-definitions AttributeName=ID,AttributeType=S \
   --key-schema AttributeName=ID,KeyType=HASH  \
   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \
   --region us-east-1 \
   --tags Key=Title,Value=ProductManager \
   --table-name myMusicTable
   ```

------
#### [ Using the AWS SDK untuk Python (Boto3) ]

1. Tambahkan [kebijakan terkelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) ke peran yang memiliki kebijakan AWS terkelola [AmazonDynamoDBFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html) yang dilampirkan padanya, seperti yang ditunjukkan pada contoh berikut.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "Null": {
                       "aws:TagKeys": "false"
                   },
                   "ForAllValues:StringNotEquals": {
                       "aws:TagKeys": "CostCenter"
                   }
               }
           }
       ]
   }
   ```

------

1. Asumsikan peran yang dilampirkan kebijakan, dan buat tabel dengan kunci tag`Title`.

   ```
   ddb_client = boto3.client('dynamodb')
   
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 1000,
           'WriteCapacityUnits': 500
       },
       Tags=[
           {
               'Key': 'Title',
               'Value': 'ProductManager'
           },
       ],
   )
   ```

------

**Tanpa ABAC**  
Jika ABAC tidak diaktifkan untuk Anda Akun AWS, DynamoDB tidak mengirim kunci tag dalam `create-table` perintah ke IAM. `Null`Kondisi memastikan bahwa kondisi mengevaluasi `false` jika tidak ada kunci tag dalam permintaan. Karena `Deny` kebijakan tidak cocok, `create-table` perintah berhasil diselesaikan.

**Dengan ABAC**  
Jika ABAC diaktifkan untuk Anda Akun AWS, kunci tag yang diteruskan dalam `create-table` perintah diteruskan ke IAM. Kunci tag `Title` dievaluasi terhadap kunci tag berbasis kondisi`CostCenter`, yang ada dalam kebijakan. `Deny` Kunci tag `Title` tidak cocok dengan kunci tag yang ada dalam `Deny` kebijakan karena `StringNotEquals` operator. Oleh karena itu, `CreateTable` tindakan gagal dan tabel Anda tidak dibuat. Menjalankan `create-table` perintah mengembalikan file`AccessDeniedException`.

```
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/DynamoFullAccessRole/ProductManager is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable with an explicit deny in an identity-based policy.
```

# Memecahkan masalah kesalahan ABAC umum untuk tabel dan indeks DynamoDB
<a name="abac-troubleshooting"></a>

Topik ini memberikan saran pemecahan masalah untuk kesalahan umum dan masalah yang mungkin Anda temui saat menerapkan ABAC di tabel atau indeks DynamoDB.

## Kunci kondisi khusus layanan dalam kebijakan menghasilkan kesalahan
<a name="abac-troubleshooting-service-specific-keys"></a>

Kunci kondisi khusus layanan tidak dianggap sebagai kunci kondisi yang valid. Jika Anda telah menggunakan kunci tersebut dalam kebijakan Anda, ini akan mengakibatkan kesalahan. Untuk memperbaiki masalah ini, Anda harus mengganti kunci kondisi khusus layanan dengan kunci kondisi yang sesuai [untuk mengimplementasikan ABAC di DynamoDB](attribute-based-access-control.md#condition-keys-implement-abac).

Misalnya, Anda telah menggunakan kunci `dynamodb:ResourceTag` kondisi dalam [kebijakan sebaris](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) yang menjalankan [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)permintaan. Bayangkan bahwa permintaan gagal dengan file`AccessDeniedException`. Contoh berikut menunjukkan kebijakan inline yang salah dengan kunci kondisi. `dynamodb:ResourceTag`

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "dynamodb:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

Untuk memperbaiki masalah ini, ganti kunci `dynamodb:ResourceTag` kondisi dengan`aws:ResourceTag`, seperti yang ditunjukkan pada contoh berikut.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

## Tidak dapat memilih keluar dari ABAC
<a name="abac-troubleshooting-unable-opt-out"></a>

Jika ABAC diaktifkan untuk akun Anda Dukungan, Anda tidak akan dapat memilih keluar dari ABAC melalui konsol DynamoDB. Untuk memilih keluar, hubungi [Dukungan](https://console.aws.amazon.com/support).

Anda dapat memilih keluar dari ABAC sendiri *hanya jika* yang berikut ini benar:
+ Anda menggunakan cara swalayan untuk [memilih melalui konsol DynamoDB](abac-enable-ddb.md#abac-enable-console).
+ Anda memilih keluar dalam waktu tujuh hari kalender setelah memilih.

# Perlindungan data di DynamoDB
<a name="data-protection"></a>

Amazon DynamoDB menyediakan infrastruktur penyimpanan yang sangat tahan lama yang dirancang untuk penyimpanan data penting dan primer. Objek disimpan secara redundan pada sejumlah perangkat di beberapa fasilitas di Wilayah Amazon DynamoDB.

DynamoDB melindungi data pengguna yang disimpan saat istirahat dan juga data dalam transit antara klien lokal dan DynamoDB, dan antara DynamoDB dan sumber daya lain dalam Wilayah yang sama. AWS AWS 

**Topics**
+ [Enkripsi DynamoDB saat diam](EncryptionAtRest.md)
+ [Mengamankan koneksi DynamoDB menggunakan titik akhir VPC dan kebijakan IAM”](inter-network-traffic-privacy.md)

# Enkripsi DynamoDB saat diam
<a name="EncryptionAtRest"></a>

Semua data pengguna yang disimpan di Amazon DynamoDB dienkripsi sepenuhnya saat diam. Enkripsi DynamoDB saat diam memberikan keamanan yang ditingkatkan dengan mengenkripsi semua data diam Anda menggunakan kunci enkripsi yang disimpan di [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/). Fungsi ini membantu mengurangi beban operasional dan kompleksitas yang terlibat dalam melindungi data sensitif. Dengan enkripsi saat diam, Anda dapat membuat aplikasi yang sensitif terhadap keamanan yang memenuhi persyaratan kepatuhan dan peraturan enkripsi yang ketat.

Enkripsi DynamoDB saat diam menyediakan lapisan tambahan perlindungan data dengan selalu mengamankan data Anda dalam tabel terenkripsi, termasuk kunci primer, indeks sekunder lokal dan global, aliran, tabel global, cadangan, dan klaster DynamoDB Accelerator (DAX) setiap kali data disimpan dalam media yang tahan lama. Kebijakan organisasi, peraturan industri atau pemerintah, dan persyaratan kepatuhan kerap mewajibkan penggunaan enkripsi saat diam untuk meningkatkan keamanan data aplikasi Anda. Untuk informasi selengkapnya tentang enkripsi untuk aplikasi database, lihat [SDK Enkripsi AWS Database](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/what-is-database-encryption-sdk.html).

Enkripsi saat istirahat terintegrasi dengan AWS KMS untuk mengelola kunci enkripsi yang digunakan untuk mengenkripsi tabel Anda. Untuk informasi selengkapnya tentang tipe dan status kunci, lihat [AWS Key Management Service konsep](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type) di *Panduan AWS Key Management Service Pengembang*.

Saat membuat tabel baru, Anda dapat memilih salah satu AWS KMS key jenis berikut untuk mengenkripsi tabel Anda. Anda dapat beralih di antara jenis-jenis kunci ini kapan saja.
+ **Kunci milik AWS —** Jenis enkripsi default. Kuncinya dimiliki oleh DynamoDB (tanpa biaya tambahan).
+ **Kunci yang dikelola AWS —** Kunci disimpan di akun Anda dan dikelola oleh AWS KMS (AWS KMS dikenakan biaya).
+ **Kunci yang dikelola pelanggan –** Kunci disimpan di akun Anda serta dibuat, dimiliki, dan dikelola oleh Anda. Anda memiliki kontrol penuh atas kunci KMS (AWS KMS dikenakan biaya).

Untuk informasi selengkapnya tentang jenis kunci, lihat [Kunci dan AWS kunci pelanggan](/kms/latest/developerguide/concepts.html#key-mgmt).

**catatan**  
Saat membuat klaster DAX baru dengan enkripsi saat diam diaktifkan, Kunci yang dikelola AWS akan digunakan untuk mengenkripsi data diam di klaster.
Jika tabel Anda memiliki kunci urutan, beberapa kunci urutan yang menandai batas kisaran disimpan dalam plaintext di metadata tabel.

Ketika Anda mengakses tabel terenkripsi, DynamoDB mendekripsi data tabel secara transparan. Anda tidak perlu mengubah kode atau aplikasi apa pun untuk menggunakan atau mengelola tabel terenkripsi. DynamoDB terus memberikan latensi milidetik satu digit yang sama yang Anda harapkan, dan semua kueri DynamoDB bekerja dengan lancar pada data terenkripsi Anda.

Anda dapat menentukan kunci enkripsi saat membuat tabel baru atau mengganti kunci enkripsi pada tabel yang ada dengan menggunakan Konsol Manajemen AWS, AWS Command Line Interface (AWS CLI), atau Amazon DynamoDB API. Untuk mempelajari caranya, lihat [Mengelola tabel yang dienkripsi di DynamoDB](encryption.tutorial.md).

Enkripsi saat istirahat menggunakan Kunci milik AWS ditawarkan tanpa biaya tambahan. Namun, AWS KMS biaya berlaku untuk Kunci yang dikelola AWS dan untuk kunci yang dikelola pelanggan. Untuk informasi selengkapnya tentang harga, silakan lihat [harga AWS KMS](https://aws.amazon.com/kms/pricing).

Enkripsi DynamoDB saat istirahat tersedia di AWS semua Wilayah, termasuk Wilayah AWS Tiongkok (Beijing) dan AWS China (Ningxia) dan Wilayah (AS). AWS GovCloud Untuk informasi selengkapnya, lihat [Enkripsi DynamoDB saat istirahat: Cara kerjanya](encryption.howitworks.md) dan [Catatan penggunaan enkripsi DynamoDB saat diam](encryption.usagenotes.md).

# Enkripsi DynamoDB saat istirahat: Cara kerjanya
<a name="encryption.howitworks"></a>

Enkripsi Amazon DynamoDB saat diam mengenkripsi data Anda menggunakan Advanced Encryption Standard 256-bit (AES-256), yang membantu mengamankan data Anda dari akses tidak sah ke penyimpanan dasar.

Enkripsi saat istirahat terintegrasi dengan AWS Key Management Service (AWS KMS) untuk mengelola kunci enkripsi yang digunakan untuk mengenkripsi tabel Anda.

**catatan**  
Pada Mei 2022, AWS KMS mengubah jadwal rotasi Kunci yang dikelola AWS dari setiap tiga tahun (sekitar 1.095 hari) menjadi setiap tahun (sekitar 365 hari).  
Baru Kunci yang dikelola AWS secara otomatis diputar satu tahun setelah dibuat, dan kira-kira setiap tahun setelahnya.  
Yang Kunci yang dikelola AWS ada secara otomatis diputar satu tahun setelah rotasi terbaru mereka, dan setiap tahun setelahnya.

## Kunci milik AWS
<a name="ddb-owned"></a>

 Kunci milik AWS tidak disimpan di AWS akun Anda. Mereka adalah bagian dari kumpulan kunci KMS yang AWS memiliki dan mengelola untuk digunakan di beberapa AWS akun. AWS Layanan dapat digunakan Kunci milik AWS untuk melindungi data Anda. Kunci milik AWS digunakan oleh DynamoDB diputar setiap tahun (sekitar 365 hari). 

Anda tidak dapat melihat, mengelola, atau menggunakan Kunci milik AWS, atau mengaudit penggunaannya. Namun, Anda tidak perlu melakukan hal apa pun atau mengubah program apa pun untuk melindungi kunci yang mengenkripsi data Anda.

Anda tidak dikenakan biaya bulanan atau biaya penggunaan untuk penggunaan Kunci milik AWS, dan mereka tidak dihitung terhadap AWS KMS kuota untuk akun Anda.

## Kunci yang dikelola AWS
<a name="managed-key-service-default-kms"></a>

Kunci yang dikelola AWS adalah kunci KMS di akun Anda yang dibuat, dikelola, dan digunakan atas nama Anda oleh AWS layanan yang terintegrasi dengannya AWS KMS. Anda dapat melihat Kunci yang dikelola AWS di akun Anda, melihat kebijakan kuncinya, dan mengaudit penggunaannya di log AWS CloudTrail . Namun, Anda tidak dapat mengelola kunci KMS ini atau mengubah izinnya.

Enkripsi saat istirahat secara otomatis terintegrasi dengan AWS KMS untuk mengelola untuk DynamoDB `aws/dynamodb` () yang digunakan Kunci yang dikelola AWS untuk mengenkripsi tabel Anda. Jika Kunci yang dikelola AWS tidak ada saat Anda membuat tabel DynamoDB terenkripsi, AWS KMS secara otomatis membuat kunci baru untuk Anda. Kunci ini digunakan dengan tabel terenkripsi yang dibuat di masa depan. AWS KMS menggabungkan perangkat keras dan perangkat lunak yang aman dan sangat tersedia untuk menyediakan sistem manajemen kunci yang diskalakan untuk cloud.

Untuk informasi selengkapnya tentang mengelola izin Kunci yang dikelola AWS, lihat [Mengotorisasi penggunaan Kunci yang dikelola AWS dalam Panduan AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-authz) *Pengembang*.

## Kunci yang dikelola pelanggan
<a name="managed-key-customer-managed"></a>

Kunci yang dikelola pelanggan adalah kunci KMS di AWS akun Anda yang Anda buat, miliki, dan kelola. Anda memiliki kontrol penuh atas KMS ini, termasuk membangun dan memelihara kebijakan kuncinya, kebijakan IAM, dan pemberian izin; mengaktifkan dan menonaktifkannya; merotasi materi kriptografinya; menambahkan tag; membuat alias yang merujuk kepadanya; dan menjadwalkan penghapusan KMS tersebut. Untuk informasi selengkapnya tentang mengelola izin kunci terkelola pelanggan, lihat [Kunci terkelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

Saat Anda menentukan kunci yang dikelola pelanggan sebagai kunci enkripsi tingkat tabel, tabel DynamoDB, indeks sekunder lokal dan global, dan aliran dienkripsi dengan kunci yang sama dengan yang dikelola pelanggan. Cadangan sesuai permintaan dienkripsi dengan kunci enkripsi tingkat tabel yang ditentukan pada saat cadangan dibuat. Memperbarui kunci enkripsi tingkat tabel tidak mengubah kunci enkripsi yang terkait dengan cadangan sesuai permintaan yang ada.

Mengatur status kunci yang dikelola pelanggan ke nonaktif atau menjadwalkannya untuk dihapus akan membuat semua pengguna dan layanan DynamoDB tidak dapat mengenkripsi atau mendekripsi data serta melakukan operasi baca dan tulis pada tabel. DynamoDB harus memiliki akses ke kunci enkripsi Anda untuk memastikan bahwa Anda dapat terus mengakses tabel Anda dan untuk mencegah kehilangan data.

Jika Anda menonaktifkan kunci yang dikelola pelanggan atau menjadwalkan penghapusannya, status tabel Anda menjadi **Tidak dapat diakses**. Untuk memastikan bahwa Anda dapat terus bekerja dengan tabel, Anda harus memberikan akses DynamoDB ke kunci enkripsi yang ditentukan dalam waktu tujuh hari. Segera setelah layanan mendeteksi bahwa kunci enkripsi Anda tidak dapat diakses, DynamoDB mengirimkan pemberitahuan email untuk mengingatkan Anda.

**catatan**  
Jika kunci yang dikelola pelanggan tetap tidak dapat diakses untuk layanan DynamoDB selama lebih dari tujuh hari, tabel diarsipkan dan tidak dapat diakses lagi. DynamoDB menciptakan cadangan sesuai permintaan atas tabel Anda, dan Anda menerima tagihan terkait cadangan tersebut. Anda dapat menggunakan cadangan sesuai permintaan ini untuk memulihkan data Anda ke tabel baru. Untuk memulai pemulihan, kunci yang dikelola pelanggan terakhir pada tabel harus diaktifkan, dan DynamoDB harus dapat mengaksesnya.
Jika kunci yang dikelola pelanggan yang digunakan untuk mengenkripsi replika tabel global tidak dapat diakses, DynamoDB akan menghapus replika ini dari grup replikasi. Replika ini tidak akan dihapus dan replikasi dari dan ke wilayah ini akan dihentikan, 20 jam setelah mendeteksi bahwa kunci yang dikelola pelanggan tidak dapat diakses.

Untuk informasi selengkapnya, lihat [mengaktifkan kunci](/kms/latest/developerguide/enabling-keys.html) dan [menghapus kunci](/kms/latest/developerguide/deleting-keys.html). 

## Catatan tentang penggunaan Kunci yang dikelola AWS
<a name="managed-key-notes"></a>

Amazon DynamoDB tidak dapat membaca data tabel Anda kecuali memiliki akses ke kunci KMS yang disimpan di akun Anda. AWS KMS DynamoDB menggunakan enkripsi amplop dan hierarki kunci untuk mengenkripsi data. Kunci AWS KMS enkripsi Anda digunakan untuk mengenkripsi kunci root hierarki kunci ini. Untuk informasi lebih lanjut, lihat [Enkripsi amplop](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping) di *Panduan Developer AWS Key Management Service *.

 DynamoDB tidak AWS KMS memanggil setiap operasi DynamoDB. Kuncinya disegarkan setiap 5 menit sekali per penelepon dengan lalu lintas aktif.

Pastikan bahwa Anda telah mengonfigurasi SDK untuk menggunakan kembali koneksi. Jika tidak, Anda akan mengalami latensi dari DynamoDB yang harus membangun kembali entri AWS KMS cache baru untuk setiap operasi DynamoDB. Selain itu, Anda mungkin harus menghadapi CloudTrail biaya AWS KMS dan biaya yang lebih tinggi. Misalnya, untuk melakukannya menggunakan SDK Node.js, Anda dapat membuat agen HTTPS baru dengan `keepAlive` diaktifkan. Untuk informasi selengkapnya, lihat [Mengonfigurasi keepAlive di Node.js](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html) di *Panduan Developer AWS SDK untuk JavaScript *.

# Catatan penggunaan enkripsi DynamoDB saat diam
<a name="encryption.usagenotes"></a>

Pertimbangkan hal berikut saat Anda menggunakan enkripsi saat diam di Amazon DynamoDB.

## Semua data tabel dienkripsi
<a name="encryption.usagenotes.tabledata"></a>

Enkripsi di sisi server saat diam diaktifkan pada semua data tabel DynamoDB dan tidak dapat dinonaktifkan. Anda tidak dapat mengenkripsi subset item saja dalam tabel.

Enkripsi saat diam hanya mengenkripsi data saat statis (saat diam) pada media penyimpanan persisten. Jika keamanan data menjadi perhatian atas data bergerak atau data dalam penggunaan, Anda mungkin perlu melakukan tindakan tambahan:
+ Data bergerak: Semua data Anda di DynamoDB dienkripsi saat bergerak. Secara default, komunikasi ke dan dari DynamoDB menggunakan protokol HTTPS, yang melindungi lalu lintas jaringan menggunakan enkripsi Secure Sockets Layer (SSL)/Keamanan Lapisan Pengangkutan (TLS).
+ Data dalam penggunaan: Melindungi data Anda sebelum mengirimkannya ke DynamoDB menggunakan enkripsi di sisi klien. Untuk informasi selengkapnya, lihat [Enkripsi di sisi klien dan di sisi server](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/client-server-side.html) dalam *Panduan Developer Amazon DynamoDB Encryption Client*.

Anda dapat menggunakan aliran dengan tabel terenkripsi. Aliran DynamoDB selalu dienkripsi dengan kunci enkripsi tingkat tabel. Untuk informasi selengkapnya, lihat [Tangkapan data perubahan DynamoDB Streams](Streams.md).

Cadangan DynamoDB dienkripsi, dan tabel yang dipulihkan dari cadangan juga diaktifkan enkripsinya. Anda dapat menggunakan Kunci milik AWS, Kunci yang dikelola AWS, atau kunci yang dikelola pelanggan untuk mengenkripsi data cadangan Anda. Untuk informasi selengkapnya, lihat [Backup dan restore untuk DynamoDB](Backup-and-Restore.md).

Indeks sekunder lokal dan indeks sekunder global dienkripsi menggunakan kunci yang sama seperti tabel dasar.

## Jenis enkripsi
<a name="encryption.usagenotes.encryptiontypes"></a>

**catatan**  
Kunci yang dikelola pelanggan tidak didukung di Tabel Global Versi 2017. Jika ingin menggunakan kunci yang dikelola pelanggan di Tabel Global DynamoDB, Anda perlu meningkatkan tabel ke Tabel Global Versi 2019, lalu mengaktifkannya.

Pada Konsol Manajemen AWS, jenis enkripsi adalah `KMS` ketika Anda menggunakan Kunci yang dikelola AWS atau kunci yang dikelola pelanggan untuk mengenkripsi data Anda. Jenis enkripsi adalah `DEFAULT` ketika Anda menggunakan Kunci milik AWS. Di Amazon DynamoDB API, jenis enkripsi `KMS` adalah saat Anda menggunakan atau kunci Kunci yang dikelola AWS yang dikelola pelanggan. Apabila tidak ada jenis enkripsi, data Anda dienkripsi menggunakan Kunci milik AWS. Anda dapat beralih antara Kunci milik AWS, Kunci yang dikelola AWS, dan kunci yang dikelola pelanggan pada waktu tertentu. Anda dapat menggunakan konsol, AWS Command Line Interface (AWS CLI), atau Amazon DynamoDB API untuk mengganti kunci enkripsi.

Perhatikan batasan berikut saat menggunakan kunci yang dikelola pelanggan:
+ Anda tidak dapat menggunakan kunci yang dikelola pelanggan dengan klaster DynamoDB Accelerator (DAX). Untuk informasi selengkapnya, lihat [Enkripsi DAX saat diam](DAXEncryptionAtRest.md).
+ Anda dapat menggunakan kunci yang dikelola pelanggan untuk mengenkripsi tabel yang menggunakan transaksi. Namun, guna memastikan ketahanan untuk propagasi transaksi, salinan permintaan transaksi disimpan sementara oleh layanan dan dienkripsi menggunakan Kunci milik AWS. Data yang ditempatkan di tabel dan indeks sekunder Anda selalu dienkripsi saat diam menggunakan kunci yang dikelola pelanggan.
+ Anda dapat menggunakan kunci yang dikelola pelanggan untuk mengenkripsi tabel yang menggunakan Contributor Insights. Namun, data yang dikirimkan ke Amazon CloudWatch dienkripsi dengan file. Kunci milik AWS
+ Saat Anda beralih ke kunci terkelola pelanggan baru, pastikan untuk tetap mengaktifkan kunci asli hingga proses selesai. AWS masih akan membutuhkan kunci asli untuk mendekripsi data sebelum mengenkripsi dengan kunci baru. Proses akan selesai ketika SSEDescription Status tabel DIAKTIFKAN dan kunci KMSMaster KeyArn yang dikelola pelanggan baru ditampilkan. Pada titik ini, kunci asli dapat dinonaktifkan atau dijadwalkan untuk dihapus.
+ Setelah kunci yang dikelola pelanggan baru ditampilkan, tabel dan cadangan sesuai permintaan baru dienkripsi dengan kunci baru.
+ Setiap cadangan sesuai permintaan yang ada tetap dienkripsi dengan kunci yang dikelola pelanggan yang digunakan saat cadangan tersebut dibuat. Anda akan membutuhkan kunci yang sama untuk memulihkan cadangan tersebut. Anda dapat mengidentifikasi kunci untuk periode ketika setiap cadangan dibuat dengan menggunakan DescribeBackup API untuk melihat cadangan tersebut SSEDescription.
+ Jika Anda menonaktifkan kunci yang dikelola pelanggan atau menjadwalkannya untuk dihapus, data apa pun di DynamoDB Streams masih dikenakan masa aktif 24 jam. Data aktivitas yang tidak diambil memenuhi syarat untuk dipangkas saat berusia lebih dari 24 jam.
+ Jika Anda menonaktifkan kunci yang dikelola pelanggan atau menjadwalkannya untuk dihapus, penghapusan Waktu untuk Tayang (TTL) berlanjut selama 30 menit. Penghapusan TTL ini terus dipancarkan ke DynamoDB Streams dan tunduk pada interval standar. trimming/retention 

  Untuk informasi selengkapnya, lihat [mengaktifkan kunci](/kms/latest/developerguide/enabling-keys.html) dan [menghapus kunci](/kms/latest/developerguide/deleting-keys.html). 

## Menggunakan kunci KMS dan kunci data
<a name="dynamodb-kms"></a>

Fitur enkripsi DynamoDB saat istirahat menggunakan AWS KMS key dan hierarki kunci data untuk melindungi data tabel Anda. DynamoDB menggunakan hierarki kunci yang sama untuk melindungi aliran, tabel global, dan cadangan DynamoDB ketika ditulis ke media tahan lama.

Kami menyarankan Anda merencanakan strategi enkripsi Anda sebelum menerapkan tabel Anda di DynamoDB. Jika Anda menyimpan data sensitif atau rahasia di DynamoDB, pertimbangkan untuk menyertakan enkripsi di sisi klien dalam paket Anda. Dengan cara ini, Anda dapat mengenkripsi data sedekat mungkin dengan asalnya, dan memastikan perlindungannya sepanjang siklus hidupnya. Untuk informasi selengkapnya, lihat dokumentasi [klien enkripsi DynamoDB](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/what-is-ddb-encrypt.html).

**AWS KMS key**  
Enkripsi saat diam melindungi tabel DynamoDB Anda di bawah AWS KMS key. Secara default, DynamoDB menggunakan [Kunci milik AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk), kunci enkripsi multi-penghuni yang dibuat dan dikelola di akun layanan DynamoDB. Namun Anda dapat mengenkripsi tabel DynamoDB Anda di bawah [kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) untuk DynamoDB (`aws/dynamodb`) di Akun AWS Anda. Anda dapat memilih kunci KMS yang berbeda untuk setiap tabel. Kunci KMS yang Anda pilih untuk tabel juga digunakan untuk mengenkripsi indeks sekunder lokal dan global, aliran, dan cadangan.  
Anda memilih kunci KMS untuk tabel saat membuat atau memperbarui tabel. Anda dapat mengubah kunci KMS untuk tabel kapan saja, baik di konsol DynamoDB atau dengan menggunakan operasi. [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) Proses pengalihan kunci berjalan tanpa hambatan dan tidak memerlukan waktu henti atau menurunkan layanan.  
DynamoDB hanya mendukung [kunci KMS simetris](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks). Anda tidak dapat menggunakan [kunci KMS asimetris](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks) untuk mengenkripsi tabel DynamoDB Anda. 
Gunakan kunci yang dikelola pelanggan untuk mendapatkan fitur berikut:  
+ Anda membuat dan mengelola kunci KMS, termasuk menetapkan [kebijakan kunci](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), [kebijakan IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html), dan [pemberian izin](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) untuk mengontrol akses ke kunci KMS. Anda dapat [mengaktifkan dan menonaktifkan](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html) kunci KMS, mengaktifkan dan menonaktifkan [rotasi kunci otomatis](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html), dan [menghapus kunci KMS](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) ketika sudah tidak digunakan.
+ Anda dapat menggunakan kunci yang dikelola pelanggan dengan [material kunci yang diimpor](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) atau kunci yang dikelola pelanggan di [penyimpanan kunci kustom](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html) yang Anda miliki dan kelola. 
+ [Anda dapat mengaudit enkripsi dan dekripsi tabel DynamoDB Anda dengan memeriksa panggilan API DynamoDB ke dalam log. AWS KMSAWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-cmk-trail)
Gunakan Kunci yang dikelola AWS jika Anda memerlukan salah satu fitur berikut:  
+ Anda dapat [melihat kunci KMS](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html) dan [melihat kebijakan kuncinya](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-viewing.html). (Anda tidak dapat mengubah kebijakan kunci.)
+ [Anda dapat mengaudit enkripsi dan dekripsi tabel DynamoDB Anda dengan memeriksa panggilan API DynamoDB ke dalam log. AWS KMSAWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-cmk-trail)
Namun, Kunci milik AWS ini gratis dan penggunaannya tidak dihitung terhadap [AWS KMS sumber daya atau kuota permintaan](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html). Kunci yang dikelola pelanggan dan Kunci yang dikelola AWS [dikenakan biaya](https://aws.amazon.com/kms/pricing/) untuk setiap panggilan API dan AWS KMS kuota berlaku untuk kunci KMS ini.

**Kunci tabel**  
DynamoDB menggunakan kunci KMS untuk tabel guna [menghasilkan](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) dan mengenkripsi [kunci data](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) unik untuk tabel tersebut, yang dikenal sebagai *kunci tabel*. Kunci tabel bertahan sepanjang masa hidup tabel terenkripsi.   
Kunci tabel digunakan sebagai kunci enkripsi kunci. DynamoDB menggunakan kunci tabel ini untuk melindungi kunci enkripsi data yang digunakan untuk mengenkripsi data tabel. DynamoDB menghasilkan kunci enkripsi data yang unik untuk setiap struktur dasar dalam tabel, tetapi beberapa item tabel mungkin dilindungi oleh kunci enkripsi data yang sama.  

![\[Mengenkripsi tabel DynamoDB dengan enkripsi saat diam\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/service-ddb-encrypt.png)

Saat pertama kali mengakses tabel terenkripsi, DynamoDB mengirimkan permintaan untuk menggunakan kunci KMS AWS KMS untuk mendekripsi kunci tabel. Kemudian, layanan ini menggunakan kunci tabel plaintext untuk mendekripsi kunci enkripsi data, dan menggunakan kunci enkripsi data plaintext untuk mendekripsi data tabel.  
DynamoDB menyimpan dan menggunakan kunci tabel dan kunci enkripsi data di luar. AWS KMS Layanan ini melindungi semua kunci dengan enkripsi [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES) dan kunci enkripsi 256-bit. Kemudian, layanan ini menyimpan kunci terenkripsi dengan data terenkripsi agar kunci tersebut tersedia untuk mendekripsi data tabel sesuai permintaan.  
Jika Anda mengubah kunci KMS untuk tabel Anda, DynamoDB menghasilkan kunci tabel baru. Kemudian, layanan ini menggunakan kunci tabel baru untuk melakukan enkripsi ulang kunci enkripsi data.

**Melakukan cache pada kunci tabel**  
Untuk menghindari panggilan AWS KMS untuk setiap operasi DynamoDB, DynamoDB menyimpan tombol tabel plaintext untuk setiap pemanggil dalam memori. Jika DynamoDB mendapat permintaan untuk kunci tabel cache setelah lima menit tidak aktif, ia akan mengirimkan permintaan baru AWS KMS untuk mendekripsi kunci tabel. Panggilan ini akan menangkap setiap perubahan yang dibuat pada kebijakan akses kunci KMS di AWS KMS atau AWS Identity and Access Management (IAM) sejak permintaan terakhir untuk mendekripsi kunci tabel.

## Mengotorisasi penggunaan kunci KMS Anda
<a name="dynamodb-kms-authz"></a>

Jika Anda menggunakan [kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) atau [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) di akun Anda untuk melindungi tabel DynamoDB Anda, kebijakan pada kunci KMS tersebut harus memberikan izin kepada DynamoDB untuk menggunakannya atas nama Anda. Konteks otorisasi pada Kunci yang dikelola AWS for DynamoDB menyertakan kebijakan utamanya dan hibah yang mendelegasikan izin untuk menggunakannya. 

Anda memiliki kontrol penuh atas kebijakan dan pemberian izin pada kunci yang dikelola pelanggan. Karena Kunci yang dikelola AWS ada di akun Anda, Anda dapat melihat kebijakan dan pemberian izinnya. Tetapi, karena dikelola oleh AWS, Anda tidak dapat mengubah kebijakan.

DynamoDB tidak memerlukan otorisasi tambahan untuk menggunakan default untuk melindungi tabel DynamoDB di tabel [Kunci milik AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)Anda. Akun AWS

**Topics**
+ [Kebijakan utama untuk sebuah Kunci yang dikelola AWS](#dynamodb-policies)
+ [Kebijakan kunci untuk kunci yang dikelola pelanggan](#dynamodb-customer-cmk-policy)
+ [Menggunakan pemberian izin untuk mengotorisasi DynamoDB](#dynamodb-grants)

### Kebijakan utama untuk sebuah Kunci yang dikelola AWS
<a name="dynamodb-policies"></a>

Ketika DynamoDB menggunakan [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) untuk DynamoDB (`aws/dynamodb`) dalam operasi kriptografi, layanan ini melakukannya atas nama pengguna yang mengakses [sumber daya DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html). Kebijakan utama pada Kunci yang dikelola AWS memberikan semua pengguna di akun izin untuk menggunakan Kunci yang dikelola AWS untuk operasi tertentu. Namun izin hanya diberikan ketika DynamoDB membuat permintaan atas nama pengguna. [ViaService Kondisi](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) dalam kebijakan kunci tidak mengizinkan pengguna untuk menggunakan Kunci yang dikelola AWS kecuali permintaan berasal dari layanan DynamoDB.

Kebijakan utama ini, seperti kebijakan semua Kunci yang dikelola AWS, ditetapkan oleh AWS. Anda tidak dapat mengubahnya, tetapi Anda dapat melihatnya kapan saja. Untuk detailnya, lihat [Melihat kebijakan kunci](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-viewing.html).

Pernyataan kebijakan dalam kebijakan kunci memiliki efek sebagai berikut:
+ Izinkan pengguna di akun untuk menggunakan Kunci yang dikelola AWS for DynamoDB dalam operasi kriptografi ketika permintaan berasal dari DynamoDB atas nama mereka. Kebijakan ini juga memungkinkan pengguna untuk [membuat pemberian izin](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-grants) untuk kunci KMS.
+ Memungkinkan identitas IAM yang diotorisasi di akun untuk melihat properti Kunci yang dikelola AWS untuk DynamoDB dan [mencabut pemberian izin](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) yang memungkinkan DynamoDB menggunakan kunci KMS. DynamoDB menggunakan [pemberian izin](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-grants) untuk operasi pemeliharaan berkelanjutan.
+ Memungkinkan DynamoDB melakukan operasi read-only untuk menemukan DynamoDB untuk akun Kunci yang dikelola AWS Anda.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id" : "auto-dynamodb-1",
  "Statement" : [ {
    "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "*"
    },
    "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ],
    "Resource" : "*",
    "Condition" : {
      "StringEquals" : {
        "kms:CallerAccount" : "111122223333",
        "kms:ViaService" : "dynamodb.us-west-2.amazonaws.com"
      }
    }
  }, {
    "Sid" : "Allow direct access to key metadata to the account",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "arn:aws:iam::111122223333:root"
    },
    "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ],
    "Resource" : "*"
  }, {
    "Sid" : "Allow DynamoDB Service with service principal name dynamodb.amazonaws.com to describe the key directly",
    "Effect" : "Allow",
    "Principal" : {
      "Service" : "dynamodb.amazonaws.com"
    },
    "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*" ],
    "Resource" : "*"
  } ]
}
```

------

### Kebijakan kunci untuk kunci yang dikelola pelanggan
<a name="dynamodb-customer-cmk-policy"></a>

Saat Anda memilih [kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) untuk melindungi tabel DynamoDB, DynamoDB mendapat izin untuk menggunakan kunci KMS atas nama pengguna utama yang membuat pilihan. Pengguna utama tersebut, pengguna atau peran, harus memiliki izin pada kunci KMS yang dibutuhkan DynamoDB. Anda dapat memberikan izin ini dalam [kebijakan kunci](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), [kebijakan IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html), atau [pemberian izin](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html).

Minimal, DynamoDB memerlukan izin berikut pada kunci yang dikelola pelanggan:
+ [kms:Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
+ [kms: ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) \$1 (untuk kms: ReEncryptFrom dan kms:ReEncryptTo)
+ kms: GenerateDataKey \$1 (untuk [kms: GenerateDataKey dan [kms](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html):](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)) GenerateDataKeyWithoutPlaintext
+ [km: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [km: CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)

Sebagai contoh, kebijakan kunci berikut hanya menyediakan izin yang diperlukan. Kebijakan ini memiliki efek sebagai berikut:
+ Memungkinkan DynamoDB untuk menggunakan kunci KMS dalam operasi kriptografi dan membuat pemberian izin, tetapi hanya ketika bertindak atas nama pengguna utama di akun yang memiliki izin untuk menggunakan DynamoDB. Jika pengguna utama yang disebutkan dalam pernyataan kebijakan tidak memiliki izin untuk menggunakan DynamoDB, panggilan gagal, bahkan ketika panggilan berasal dari layanan DynamoDB. 
+ Kunci ViaService kondisi [kms:](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) mengizinkan izin hanya jika permintaan berasal dari DynamoDB atas nama prinsipal yang tercantum dalam pernyataan kebijakan. Pengguna utama ini tidak dapat memanggil operasi ini secara langsung. Perhatikan bahwa nilai `kms:ViaService`, `dynamodb.*.amazonaws.com`, memiliki tanda bintang (\$1) di posisi Wilayah. [DynamoDB memerlukan izin untuk independen dari apa pun sehingga dapat membuat panggilan lintas Wilayah AWS wilayah untuk mendukung tabel global DynamoDB.](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html)
+ Memberikan administrator kunci KMS (pengguna yang dapat mengasumsikan peran `db-team`) akses hanya-baca ke kunci KMS dan izin untuk mencabut pemberian izin, termasuk [pemberian izin yang diperlukan DynamoDB](#dynamodb-grants) untuk melindungi tabel.

Sebelum menggunakan kebijakan kunci contoh, ganti prinsip contoh dengan prinsip aktual dari Anda. Akun AWS

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

****  

```
{
  "Id": "key-policy-dynamodb",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB",
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"},
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey",
        "kms:CreateGrant"
      ],
      "Resource": "*",      
      "Condition": { 
         "StringLike": {
           "kms:ViaService" : "dynamodb.*.amazonaws.com"
         }
      }
    },
    {
      "Sid":  "Allow administrators to view the KMS key and revoke grants",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/db-team"
       },
      "Action": [
        "kms:Describe*",
        "kms:Get*",
        "kms:List*",
        "kms:RevokeGrant"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### Menggunakan pemberian izin untuk mengotorisasi DynamoDB
<a name="dynamodb-grants"></a>

Selain kebijakan kunci, DynamoDB menggunakan pemberian izin untuk mengatur izin pada kunci yang dikelola pelanggan atau Kunci yang dikelola AWS untuk DynamoDB (`aws/dynamodb`). Untuk melihat hibah pada kunci KMS di akun Anda, gunakan operasi. [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) DynamoDB tidak memerlukan pemberian izin, atau izin tambahan apa pun, untuk menggunakan [Kunci milik AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) untuk melindungi tabel Anda.

DynamoDB menggunakan izin yang diberikan ketika melakukan pemeliharaan sistem latar belakang dan tugas perlindungan data berkelanjutan. Layanan ini juga menggunakan pemberian izin untuk menghasilkan [kunci tabel](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-encrypt).

Setiap pemberian izin berlaku spesifik pada sebuah tabel. Jika akun mencakup beberapa tabel yang dienkripsi di bawah kunci KMS yang sama, ada pemberian izin dari setiap jenis untuk setiap tabel. Hibah dibatasi oleh [konteks enkripsi DynamoDB](#dynamodb-encryption-context), yang mencakup nama tabel dan Akun AWS ID, dan itu termasuk izin untuk [pensiun hibah jika tidak lagi diperlukan](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html). 

Untuk membuat pemberian izin, DynamoDB harus memiliki izin untuk memanggil `CreateGrant` atas nama pengguna yang membuat tabel terenkripsi. Untuk Kunci yang dikelola AWS, DynamoDB `kms:CreateGrant` mendapat izin dari kebijakan [kunci](#dynamodb-policies), yang memungkinkan pengguna akun untuk [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)memanggil kunci KMS hanya ketika DynamoDB membuat permintaan atas nama pengguna yang berwenang. 

Kebijakan kunci juga dapat memungkinkan akun untuk [mencabut pemberian izin](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) pada kunci KMS. Namun, jika Anda mencabut pemberian izin pada tabel dienkripsi yang aktif, DynamoDB tidak akan mampu melindungi dan menjaga tabel tersebut.

## Konteks enkripsi DynamoDB
<a name="dynamodb-encryption-context"></a>

[Konteks enkripsi](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) adalah seperangkat pasangan kunci-nilai yang berisi data non-rahasia yang arbitrer. Ketika Anda menyertakan konteks enkripsi dalam permintaan untuk mengenkripsi data, secara AWS KMS kriptografis mengikat konteks enkripsi ke data terenkripsi. Untuk mendekripsi data, Anda harus meneruskan konteks enkripsi yang sama. 

DynamoDB menggunakan konteks enkripsi yang sama di semua operasi kriptografi. AWS KMS Jika Anda menggunakan [kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) atau [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) untuk melindungi tabel DynamoDB Anda, Anda dapat menggunakan konteks enkripsi untuk mengidentifikasi penggunaan kunci KMS dalam catatan dan log audit. Itu juga muncul dalam plaintext di log, seperti dan [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)[Amazon CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) Logs. 

Konteks enkripsi juga dapat digunakan sebagai syarat untuk otorisasi dalam kebijakan dan pemberian izin. DynamoDB menggunakan konteks enkripsi untuk membatasi hibah [yang](#dynamodb-grants) memungkinkan akses ke kunci yang dikelola pelanggan Kunci yang dikelola AWS atau di akun dan wilayah Anda.

Dalam permintaannya AWS KMS, DynamoDB menggunakan konteks enkripsi dengan dua pasangan kunci-nilai.

```
"encryptionContextSubset": {
    "aws:dynamodb:tableName": "Books"
    "aws:dynamodb:subscriberId": "111122223333"
}
```
+ **Tabel** – Pasangan kunci–nilai pertama mengidentifikasi tabel yang dienkripsi DynamoDB. Kuncinya adalah `aws:dynamodb:tableName`. Nilainya adalah nama tabel.

  ```
  "aws:dynamodb:tableName": "<table-name>"
  ```

  Contoh:

  ```
  "aws:dynamodb:tableName": "Books"
  ```
+ **Akun** – Pasangan kunci–nilai kedua mengidentifikasi Akun AWS. Kuncinya adalah `aws:dynamodb:subscriberId`. Nilainya adalah ID akun.

  ```
  "aws:dynamodb:subscriberId": "<account-id>"
  ```

  Contoh:

  ```
  "aws:dynamodb:subscriberId": "111122223333"
  ```

## Memantau interaksi DynamoDB dengan AWS KMS
<a name="dynamodb-cmk-trail"></a>

Jika Anda menggunakan [kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) atau [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)untuk melindungi tabel DynamoDB, Anda dapat AWS CloudTrail menggunakan log untuk melacak permintaan yang dikirimkan DynamoDB atas nama Anda. AWS KMS 

Permintaan `GenerateDataKey`, `Decrypt`, dan `CreateGrant` dibahas dalam bagian ini. Selain itu, DynamoDB menggunakan [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)operasi untuk menentukan apakah kunci KMS yang Anda pilih ada di akun dan wilayah. Ini juga menggunakan [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)operasi untuk menghapus hibah saat Anda menghapus tabel. 

**GenerateDataKey**  
Ketika Anda mengaktifkan enkripsi saat diam pada tabel, DynamoDB menciptakan kunci tabel unik. Ini mengirimkan *[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)*permintaan untuk AWS KMS yang menentukan kunci KMS untuk tabel.   
Peristiwa yang mencatat operasi `GenerateDataKey` serupa dengan peristiwa contoh berikut. Pengguna adalah akun layanan DynamoDB. Parameternya mencakup Amazon Resource Name (ARN) dari kunci KMS, penentu kunci yang memerlukan kunci 256-bit, dan [konteks enkripsi](#dynamodb-encryption-context) yang mengidentifikasi tabel dan Akun AWS.  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSService", 
        "invokedBy": "dynamodb.amazonaws.com" 
    },
    "eventTime": "2018-02-14T00:15:17Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "dynamodb.amazonaws.com",
    "userAgent": "dynamodb.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "aws:dynamodb:tableName": "Services",
            "aws:dynamodb:subscriberId": "111122223333"
        }, 
        "keySpec": "AES_256", 
        "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    "responseElements": null,
    "requestID": "229386c1-111c-11e8-9e21-c11ed5a52190",
    "eventID": "e3c436e9-ebca-494e-9457-8123a1f5e979",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333",
            "type": "AWS::KMS::Key" 
        } 
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333",
    "sharedEventID": "bf915fa6-6ceb-4659-8912-e36b69846aad"
}
```

**Dekripsi**  
Ketika Anda mengakses tabel DynamoDB yang dienkripsi, DynamoDB perlu mendekripsi kunci tabel agar dapat mendekripsi kunci di bawahnya dalam hierarki. Layanan ini kemudian mendekripsi data dalam tabel. Untuk mendekripsi kunci tabel. DynamoDB mengirimkan permintaan Dekripsi [yang](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) menentukan kunci AWS KMS KMS untuk tabel.  
Peristiwa yang mencatat operasi `Decrypt` serupa dengan peristiwa contoh berikut. Pengguna adalah kepala sekolah Anda Akun AWS yang mengakses tabel. Parameter termasuk kunci tabel terenkripsi (sebagai gumpalan ciphertext) dan [konteks enkripsi](#dynamodb-encryption-context) yang mengidentifikasi tabel dan file. Akun AWS AWS KMS memperoleh ID kunci KMS dari ciphertext.   

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false", 
                "creationDate": "2018-02-14T16:42:15Z"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDT3HGFQZX4RY6RU",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin" 
            }
        },
        "invokedBy": "dynamodb.amazonaws.com"
    },
    "eventTime": "2018-02-14T16:42:39Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "dynamodb.amazonaws.com",
    "userAgent": "dynamodb.amazonaws.com",
    "requestParameters": 
    {
        "encryptionContext":
        {
            "aws:dynamodb:tableName": "Books",
            "aws:dynamodb:subscriberId": "111122223333" 
        }
    }, 
    "responseElements": null, 
    "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5",
    "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", 
    "readOnly": true, 
    "resources": [ 
        {
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333", 
            "type": "AWS::KMS::Key" 
        }
    ],
    "eventType": "AwsApiCall", 
    "recipientAccountId": "111122223333"
}
```

**CreateGrant**  
Saat Anda menggunakan [kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) atau [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) untuk melindungi tabel DynamoDB Anda, DynamoDB menggunakan [pemberian izin](#dynamodb-grants) untuk mengizinkan layanan guna melakukan perlindungan dan pemeliharaan data berkelanjutan serta tugas ketahanan. Pemberian izin ini tidak diperlukan pada [Kunci milik AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk).  
Pemberian izin yang dibuat DynamoDB spesifik pada sebuah tabel. Prinsip dalam [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)permintaan adalah pengguna yang membuat tabel.   
Peristiwa yang mencatat operasi `CreateGrant` serupa dengan peristiwa contoh berikut. Parameternya mencakup Amazon Resource Name (ARN) dari kunci KMS untuk tabel tersebut, pengguna utama yang izin dan pengguna utama yang dipensiunkan (layanan DynamoDB), serta operasi yang dicakup oleh pemberian izin. Hal ini juga mencakup kendala yang mengharuskan semua operasi enkripsi menggunakan [konteks enkripsi](#dynamodb-encryption-context) yang ditentukan.  

```
{ 
    "eventVersion": "1.05", 
    "userIdentity": 
    { 
        "type": "AssumedRole", 
        "principalId": "AROAIGDTESTANDEXAMPLE:user01", 
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", 
        "accountId": "111122223333", 
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE", 
        "sessionContext": { 
            "attributes": { 
                "mfaAuthenticated": "false", 
                "creationDate": "2018-02-14T00:12:02Z" 
            }, 
            "sessionIssuer": { 
                "type": "Role", 
                "principalId": "AROAIGDTESTANDEXAMPLE", 
                "arn": "arn:aws:iam::111122223333:role/Admin", 
                "accountId": "111122223333", 
                "userName": "Admin" 
            }
        }, 
        "invokedBy": "dynamodb.amazonaws.com" 
    }, 
    "eventTime": "2018-02-14T00:15:15Z", 
    "eventSource": "kms.amazonaws.com", 
    "eventName": "CreateGrant", 
    "awsRegion": "us-west-2", 
    "sourceIPAddress": "dynamodb.amazonaws.com", 
    "userAgent": "dynamodb.amazonaws.com", 
    "requestParameters": { 
        "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", 
        "retiringPrincipal": "dynamodb.us-west-2.amazonaws.com", 
        "constraints": { 
            "encryptionContextSubset": {
                "aws:dynamodb:tableName": "Books",
                "aws:dynamodb:subscriberId": "111122223333" 
            } 
        }, 
        "granteePrincipal": "dynamodb.us-west-2.amazonaws.com", 
        "operations": [ 
            "DescribeKey", 
            "GenerateDataKey", 
            "Decrypt", 
            "Encrypt", 
            "ReEncryptFrom", 
            "ReEncryptTo", 
            "RetireGrant" 
        ] 
    }, 
    "responseElements": { 
        "grantId": "5c5cd4a3d68e65e77795f5ccc2516dff057308172b0cd107c85b5215c6e48bde" 
    }, 
    "requestID": "2192b82a-111c-11e8-a528-f398979205d8", 
    "eventID": "a03d65c3-9fee-4111-9816-8bf96b73df01", 
    "readOnly": false, 
    "resources": [ 
        { 
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333", 
            "type": "AWS::KMS::Key" 
        } 
    ], 
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

# Mengelola tabel yang dienkripsi di DynamoDB
<a name="encryption.tutorial"></a>

Anda dapat menggunakan Konsol Manajemen AWS atau AWS Command Line Interface (AWS CLI) untuk menentukan kunci enkripsi pada tabel baru dan memperbarui kunci enkripsi pada tabel yang ada di Amazon DynamoDB.

**Topics**
+ [Menentukan kunci enkripsi untuk tabel baru](#encryption.tutorial-creating)
+ [Memperbarui kunci enkripsi](#encryption.tutorial-update)

## Menentukan kunci enkripsi untuk tabel baru
<a name="encryption.tutorial-creating"></a>

Ikuti langkah berikut untuk menentukan kunci enkripsi pada tabel baru menggunakan konsol Amazon DynamoDB atau AWS CLI.

### Membuat tabel yang dienkripsi (konsol)
<a name="encryption.tutorial-console"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol DynamoDB di. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1.  Di panel navigasi di sisi kiri konsol, pilih **Tabel**.

1. Pilih **Buat Tabel**. Untuk **Nama tabel**, masukkan **Music**. Untuk kunci primer, masukkan **Artist**, dan untuk kunci urutan, masukkan **SongTitle**, keduanya sebagai string.

1. Di **Pengaturan**, pastikan bahwa **Sesuaikan pengaturan** dipilih.
**catatan**  
Jika **Gunakan pengaturan default** dipilih, tabel dienkripsi saat istirahat dengan tanpa Kunci milik AWS biaya tambahan.

1. Di bawah **Enkripsi saat istirahat**, pilih jenis enkripsi - Kunci milik AWS Kunci yang dikelola AWS, atau kunci yang dikelola pelanggan.
   +  **Dimiliki oleh Amazon DynamoDB.** AWS kunci yang dimiliki, khusus dimiliki dan dikelola oleh DynamoDB. Anda tidak dikenakan biaya tambahan untuk menggunakan kunci ini.
   + **AWS kunci yang dikelola**. Alias kunci: `aws/dynamodb`. Kunci disimpan di akun Anda dan dikelola oleh AWS Key Management Service (AWS KMS). AWS KMS dikenakan biaya.
   +  **Disimpan di akun Anda, serta dimiliki dan dikelola oleh Anda.** Kunci yang dikelola pelanggan. Kunci disimpan di akun Anda dan dikelola oleh AWS Key Management Service (AWS KMS). AWS KMS dikenakan biaya.
**catatan**  
Jika Anda memilih untuk memiliki dan mengelola kunci Anda sendiri, pastikan Kebijakan Kunci KMS diatur dengan tepat. Untuk informasi selengkapnya termasuk contoh, lihat [Kebijakan kunci untuk kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

1. Pilih **Buat tabel** untuk membuat tabel terenkripsi. Untuk mengonfirmasi jenis enkripsi, pilih detail tabel pada tab **Gambaran umum** dan tinjau bagian **Detail tambahan**.

### Membuat tabel yang dienkripsi (AWS CLI)
<a name="encryption.tutorial-cli"></a>

Gunakan AWS CLI untuk membuat tabel dengan default Kunci milik AWS, kunci Kunci yang dikelola AWS, atau yang dikelola pelanggan untuk Amazon DynamoDB.

**Untuk membuat tabel terenkripsi dengan default Kunci milik AWS**
+ Buat tabel `Music` yang dienkripsi seperti berikut.

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5
  ```
**catatan**  
Tabel ini sekarang dienkripsi menggunakan default Kunci milik AWS di akun layanan DynamoDB.

**Untuk membuat tabel terenkripsi dengan untuk Kunci yang dikelola AWS DynamoDB**
+ Buat tabel `Music` yang dienkripsi seperti berikut.

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS
  ```

   Status `SSEDescription` tabel diatur menjadi `ENABLED` dan `SSEType` adalah `KMS`. 

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**Untuk membuat tabel yang dienkripsi dengan kunci yang dikelola pelanggan untuk DynamoDB**
+ Buat tabel `Music` yang dienkripsi seperti berikut.

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**catatan**  
Untuk itu`KMSMasterKeyId`, Anda dapat menggunakan ID kunci, kunci ARN, atau alias kunci. Jika Anda menggunakan alias kunci (misalnya,`alias/my-key`), DynamoDB menyelesaikan alias dan mengaitkan kunci yang mendasarinya dengan tabel. AWS KMS Dalam deskripsi tabel, `KMSMasterKeyArn` akan selalu menampilkan ARN kunci dari kunci yang diselesaikan, bukan alias. Untuk informasi selengkapnya tentang pengidentifikasi kunci, lihat [Pengidentifikasi kunci (KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id) di Panduan *AWS Key Management Service Pengembang*.

   Status `SSEDescription` dari deskripsi tabel diatur menjadi `ENABLED` dan `SSEType` adalah `KMS`.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

## Memperbarui kunci enkripsi
<a name="encryption.tutorial-update"></a>

Anda juga dapat menggunakan konsol DynamoDB atau AWS CLI untuk memperbarui kunci enkripsi tabel yang ada antara Kunci yang dikelola AWS,, dan kunci Kunci milik AWS yang dikelola pelanggan kapan saja.

### Memperbarui kunci enkripsi (konsol)
<a name="encryption.tutorial-update-console"></a>

1. Masuk ke Konsol Manajemen AWS dan buka konsol DynamoDB di. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1.  Di panel navigasi di sisi kiri konsol, pilih **Tabel**.

1. Pilih tabel yang akan Anda perbarui.

1. Pilih dropdown **Tindakan**, lalu pilih opsi **Perbarui pengaturan**.

1. Buka tab **Pengaturan tambahan**.

1. Di bawah **Enkripsi**, pilih **Kelola enkripsi**.

1. Pilih jenis enkripsi:
   +  **Dimiliki oleh Amazon DynamoDB.** AWS KMS Kuncinya dimiliki dan dikelola oleh DynamoDB. Anda tidak dikenakan biaya tambahan untuk menggunakan kunci ini.
   + **AWS kunci terkelola** Alias kunci:`aws/dynamodb`. Kuncinya disimpan di akun Anda dan dikelola oleh AWS Key Management Service. (AWS KMS). AWS KMS dikenakan biaya.
   +  **Disimpan di akun Anda, serta dimiliki dan dikelola oleh Anda.** Kuncinya disimpan di akun Anda dan dikelola oleh AWS Key Management Service. (AWS KMS). AWS KMS dikenakan biaya.
**catatan**  
Jika Anda memilih untuk memiliki dan mengelola kunci Anda sendiri, pastikan Kebijakan Kunci KMS diatur dengan tepat. Untuk informasi selengkapnya, lihat [Kebijakan kunci untuk kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

   Lalu pilih **Simpan** untuk memperbarui tabel yang dienkripsi. Untuk mengonfirmasi jenis enkripsi, periksa detail tabel di bawah tab **Gambaran Umum**.

### Memperbarui kunci enkripsi (AWS CLI)
<a name="encryption.tutorial-update-cli"></a>

Contoh-contoh berikut menunjukkan cara memperbarui tabel yang dienkripsi menggunakan AWS CLI.

**Untuk memperbarui tabel terenkripsi dengan default Kunci milik AWS**
+ Perbarui tabel `Music` yang dienkripsi, seperti pada contoh berikut.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=false
  ```
**catatan**  
Tabel ini sekarang dienkripsi menggunakan default Kunci milik AWS di akun layanan DynamoDB.

**Untuk memperbarui tabel terenkripsi dengan untuk Kunci yang dikelola AWS DynamoDB**
+ Perbarui tabel `Music` yang dienkripsi, seperti pada contoh berikut.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true
  ```

   Status `SSEDescription` dari deskripsi tabel diatur menjadi `ENABLED` dan `SSEType` adalah `KMS`.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**Untuk memperbarui tabel yang dienkripsi dengan kunci yang dikelola pelanggan untuk DynamoDB**
+ Perbarui tabel `Music` yang dienkripsi, seperti pada contoh berikut.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**catatan**  
Untuk itu`KMSMasterKeyId`, Anda dapat menggunakan ID kunci, kunci ARN, atau alias kunci. Jika Anda menggunakan alias kunci (misalnya,`alias/my-key`), DynamoDB menyelesaikan alias dan mengaitkan kunci yang mendasarinya dengan tabel. AWS KMS Dalam deskripsi tabel, `KMSMasterKeyArn` akan selalu menampilkan ARN kunci dari kunci yang diselesaikan, bukan alias.

   Status `SSEDescription` dari deskripsi tabel diatur menjadi `ENABLED` dan `SSEType` adalah `KMS`. 

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

# Mengamankan koneksi DynamoDB menggunakan titik akhir VPC dan kebijakan IAM”
<a name="inter-network-traffic-privacy"></a>

Sambungan dilindungi baik antara Amazon DynamoDB dan aplikasi lokal dan antara DynamoDB dan sumber daya lain dalam Wilayah yang sama. AWS AWS 

## Kebijakan yang diperlukan untuk titik akhir
<a name="inter-network-traffic-DescribeEndpoints"></a>

Amazon DynamoDB menyediakan API [DescribeEndpoints](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeEndpoints.html) yang memungkinkan Anda menghitung informasi titik akhir regional. Untuk permintaan ke titik akhir DynamoDB publik, API merespons terlepas dari kebijakan DynamoDB IAM yang dikonfigurasi, meskipun ada penolakan eksplisit atau implisit dalam kebijakan titik akhir IAM atau VPC. Ini karena DynamoDB sengaja melewatkan otorisasi untuk API. `DescribeEndpoints`

Untuk permintaan dari titik akhir VPC, kebijakan titik akhir IAM dan Cloud Privat Virtual (VPC) harus mengotorisasi panggilan API `DescribeEndpoints` untuk pengguna utama Identity and Access Management (IAM) yang meminta menggunakan tindakan `dynamodb:DescribeEndpoints` IAM. Jika tidak, akses ke API `DescribeEndpoints` akan ditolak.

Berikut adalah sebuah contoh kebijakan titik akhir.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "dynamodb:DescribeEndpoints",
            "Resource": "*"
        }
    ]
}
```

------

## Lalu lintas antara layanan dan aplikasi serta klien on-premise
<a name="inter-network-traffic-privacy-on-prem"></a>

Anda memiliki dua opsi konektivitas antara jaringan pribadi Anda dan AWS: 
+  AWS Site-to-Site VPN Koneksi. Untuk informasi selengkapnya, lihat [Apa itu AWS Site-to-Site VPN?](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) dalam *Panduan Pengguna AWS Site-to-Site VPN *.
+  Direct Connect Koneksi. Untuk informasi selengkapnya, lihat [Apa itu Direct Connect?](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) dalam *Panduan Pengguna Direct Connect *.

Akses ke DynamoDB melalui jaringan melalui dipublikasikan. AWS APIs Klien harus mendukung Keamanan Lapisan Pengangkutan (TLS) 1.2. Kami merekomendasikan TLS 1.3. Klien juga harus mendukung suite cipher dengan perfect forward secrecy (PFS) seperti Ephemeral Diffie-Hellman (DHE) atau Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). Sebagian besar sistem modern seperti Java 7 dan versi yang lebih baru support mode ini. Selain itu, Anda harus menandatangani permintaan menggunakan kunci akses ID dan kunci akses rahasia yang terkait dengan IAM pengguna utama, atau Anda dapat menggunakan [AWS Security Token Service (STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) untuk membuat kredensial keamanan sementara guna menandatangani permintaan.

## Lalu lintas antar AWS sumber daya di Wilayah yang sama
<a name="inter-network-traffic-privacy-within-region"></a>

Titik akhir Amazon Virtual Private Cloud (Amazon VPC) untuk DynamoDB adalah entitas logis dalam VPC yang memungkinkan konektivitas hanya ke DynamoDB. Amazon VPC merutekan permintaan ke DynamoDB dan merutekan respons kembali ke VPC. Untuk informasi selengkapnya, lihat [Titik akhir VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) di *Panduan Pengguna Amazon VPC*. Misalnya, kebijakan yang dapat Anda gunakan untuk mengontrol akses dari titik akhir VPC, lihat [Menggunakan Kebijakan IAM untuk mengontrol akses ke DynamoDB](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-ddb.html). 

**catatan**  
Titik akhir Amazon VPC tidak dapat diakses melalui atau. AWS Site-to-Site VPN Direct Connect

# AWS Identity and Access Management (IAM) dan DynamoDB
<a name="identity-and-access-mgmt"></a>

 AWS Identity and Access Management adalah AWS layanan yang membantu administrator mengontrol akses ke AWS sumber daya dengan aman. Administrator mengontrol siapa yang dapat diautentikasi (masuk) dan diotorisasi (memiliki izin) untuk menggunakan sumber daya Amazon DynamoDB dan DynamoDB Accelerator. Anda dapat menggunakan IAM untuk mengelola izin akses dan menerapkan kebijakan keamanan untuk Amazon DynamoDB dan DynamoDB Accelerator. IAM adalah AWS layanan yang dapat Anda gunakan tanpa biaya tambahan. 

 

**Topics**
+ [Manajemen Identitas dan Akses untuk Amazon DynamoDB](security-iam.md)
+ [Menggunakan ketentuan kebijakan IAM untuk kontrol akses terperinci](specifying-conditions.md)

# Manajemen Identitas dan Akses untuk Amazon DynamoDB
<a name="security-iam"></a>





AWS Identity and Access Management (IAM) adalah Layanan AWS yang membantu administrator mengontrol akses ke AWS sumber daya dengan aman. Administrator IAM mengontrol siapa yang dapat *diautentikasi* (masuk) dan *diotorisasi* (memiliki izin) untuk menggunakan sumber daya DynamoDB. IAM adalah Layanan AWS yang dapat Anda gunakan tanpa biaya tambahan.

**Topics**
+ [Audiens](#security_iam_audience)
+ [Mengautentikasi dengan identitas](#security_iam_authentication)
+ [Mengelola akses menggunakan kebijakan](#security_iam_access-manage)
+ [Cara kerja Amazon DynamoDB dengan IAM](security_iam_service-with-iam.md)
+ [Contoh kebijakan berbasis identitas untuk Amazon DynamoDB](security_iam_id-based-policy-examples.md)
+ [Pemecahan masalah identitas dan akses Amazon DynamoDB](security_iam_troubleshoot.md)
+ [Kebijakan IAM untuk mencegah pembelian kapasitas terpesan DynamoDB](iam-policy-prevent-purchase-reserved-capacity.md)

## Audiens
<a name="security_iam_audience"></a>

Cara Anda menggunakan AWS Identity and Access Management (IAM) berbeda berdasarkan peran Anda:
+ **Pengguna layanan** - minta izin dari administrator Anda jika Anda tidak dapat mengakses fitur (lihat [Pemecahan masalah identitas dan akses Amazon DynamoDB](security_iam_troubleshoot.md))
+ **Administrator layanan** - tentukan akses pengguna dan mengirimkan permintaan izin (lihat [Cara kerja Amazon DynamoDB dengan IAM](security_iam_service-with-iam.md))
+ **Administrator IAM** - tulis kebijakan untuk mengelola akses (lihat [Contoh kebijakan berbasis identitas untuk Amazon DynamoDB](security_iam_id-based-policy-examples.md))

## Mengautentikasi dengan identitas
<a name="security_iam_authentication"></a>

Otentikasi adalah cara Anda masuk AWS menggunakan kredensi identitas Anda. Anda harus diautentikasi sebagai Pengguna root akun AWS, pengguna IAM, atau dengan mengasumsikan peran IAM.

Anda dapat masuk sebagai identitas federasi menggunakan kredensil dari sumber identitas seperti AWS IAM Identity Center (Pusat Identitas IAM), autentikasi masuk tunggal, atau kredensional. Google/Facebook Untuk informasi selengkapnya tentang cara masuk, lihat [Cara masuk ke Akun AWS Anda](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) dalam *Panduan Pengguna AWS Sign-In *.

Untuk akses terprogram, AWS sediakan SDK dan CLI untuk menandatangani permintaan secara kriptografis. Untuk informasi selengkapnya, lihat [AWS Signature Version 4 untuk permintaan API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) dalam *Panduan Pengguna IAM*.

### Akun AWS pengguna root
<a name="security_iam_authentication-rootuser"></a>

 Saat Anda membuat Akun AWS, Anda mulai dengan satu identitas masuk yang disebut *pengguna Akun AWS root* yang memiliki akses lengkap ke semua Layanan AWS dan sumber daya. Kami sangat menyarankan agar Anda tidak menggunakan pengguna root untuk tugas sehari-hari. Untuk tugas yang memerlukan kredensial pengguna root, lihat [Tugas yang memerlukan kredensial pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) dalam *Panduan Pengguna IAM*. 

### Identitas terfederasi
<a name="security_iam_authentication-federated"></a>

Sebagai praktik terbaik, mewajibkan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses Layanan AWS menggunakan kredensi sementara.

*Identitas federasi* adalah pengguna dari direktori perusahaan Anda, penyedia identitas web, atau Directory Service yang mengakses Layanan AWS menggunakan kredensil dari sumber identitas. Identitas terfederasi mengambil peran yang memberikan kredensial sementara.

Untuk manajemen akses terpusat, kami menyarankan AWS IAM Identity Center. Untuk informasi selengkapnya, lihat [Apa itu Pusat Identitas IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) dalam *Panduan Pengguna AWS IAM Identity Center *.

### Pengguna dan grup IAM
<a name="security_iam_authentication-iamuser"></a>

*[Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* adalah identitas dengan izin khusus untuk satu orang atau aplikasi. Sebaiknya gunakan kredensial sementara alih-alih pengguna IAM dengan kredensial jangka panjang. Untuk informasi selengkapnya, lihat [Mewajibkan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses AWS menggunakan kredensi sementara](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) di Panduan Pengguna *IAM*.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) menentukan kumpulan pengguna IAM dan mempermudah pengelolaan izin untuk pengguna dalam jumlah besar. Untuk mempelajari selengkapnya, lihat [Kasus penggunaan untuk pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) dalam *Panduan Pengguna IAM*.

### Peran IAM
<a name="security_iam_authentication-iamrole"></a>

*[Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* adalah identitas dengan izin khusus yang menyediakan kredensial sementara. Anda dapat mengambil peran dengan [beralih dari pengguna ke peran IAM (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) atau dengan memanggil operasi AWS CLI atau AWS API. Untuk informasi selengkapnya, lihat [Metode untuk mengambil peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) dalam *Panduan Pengguna IAM*.

Peran IAM berguna untuk akses pengguna terfederasi, izin pengguna IAM sementara, akses lintas akun, akses lintas layanan, dan aplikasi yang berjalan di Amazon EC2. Untuk informasi selengkapnya, lihat [Akses sumber daya lintas akun di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dalam *Panduan Pengguna IAM*.

## Mengelola akses menggunakan kebijakan
<a name="security_iam_access-manage"></a>

Anda mengontrol akses AWS dengan membuat kebijakan dan melampirkannya ke AWS identitas atau sumber daya. Kebijakan menentukan izin saat dikaitkan dengan identitas atau sumber daya. AWS mengevaluasi kebijakan ini ketika kepala sekolah membuat permintaan. Sebagian besar kebijakan disimpan AWS sebagai dokumen JSON. Untuk informasi selengkapnya tentang dokumen kebijakan JSON, lihat [Gambaran umum kebijakan JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) dalam *Panduan Pengguna IAM*.

Menggunakan kebijakan, administrator menentukan siapa yang memiliki akses ke apa dengan mendefinisikan **principal** mana yang dapat melakukan **tindakan** pada **sumber daya** apa, dan dalam **kondisi** apa.

Secara default, pengguna dan peran tidak memiliki izin. Administrator IAM membuat kebijakan IAM dan menambahkannya ke peran, yang kemudian dapat diambil oleh pengguna. Kebijakan IAM mendefinisikan izin terlepas dari metode yang Anda gunakan untuk melakukan operasinya.

### Kebijakan berbasis identitas
<a name="security_iam_access-manage-id-based-policies"></a>

Kebijakan berbasis identitas adalah dokumen kebijakan izin JSON yang Anda lampirkan ke identitas (pengguna, grup, atau peran). Kebijakan ini mengontrol tindakan apa yang bisa dilakukan oleh identitas tersebut, terhadap sumber daya yang mana, dan dalam kondisi apa. Untuk mempelajari cara membuat kebijakan berbasis identitas, lihat [Tentukan izin IAM kustom dengan kebijakan yang dikelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dalam *Panduan Pengguna IAM*.

Kebijakan berbasis identitas dapat berupa *kebijakan inline* (disematkan langsung ke dalam satu identitas) atau *kebijakan terkelola* (kebijakan mandiri yang dilampirkan pada banyak identitas). Untuk mempelajari cara memilih antara kebijakan terkelola dan kebijakan inline, lihat [Pilih antara kebijakan terkelola dan kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) dalam *Panduan Pengguna IAM*.

### Kebijakan berbasis sumber daya
<a name="security_iam_access-manage-resource-based-policies"></a>

Kebijakan berbasis sumber daya adalah dokumen kebijakan JSON yang Anda lampirkan ke sumber daya. Contohnya termasuk *kebijakan kepercayaan peran IAM* dan *kebijakan bucket* Amazon S3. Dalam layanan yang mendukung kebijakan berbasis sumber daya, administrator layanan dapat menggunakannya untuk mengontrol akses ke sumber daya tertentu. Anda harus [menentukan principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dalam kebijakan berbasis sumber daya.

Kebijakan berbasis sumber daya merupakan kebijakan inline yang terletak di layanan tersebut. Anda tidak dapat menggunakan kebijakan AWS terkelola dari IAM dalam kebijakan berbasis sumber daya.

### Jenis-jenis kebijakan lain
<a name="security_iam_access-manage-other-policies"></a>

AWS mendukung jenis kebijakan tambahan yang dapat menetapkan izin maksimum yang diberikan oleh jenis kebijakan yang lebih umum:
+ **Batasan izin** – Menetapkan izin maksimum yang dapat diberikan oleh kebijakan berbasis identitas kepada entitas IAM. Untuk informasi selengkapnya, lihat [Batasan izin untuk entitas IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) dalam *Panduan Pengguna IAM*.
+ **Kebijakan kontrol layanan (SCPs)** — Tentukan izin maksimum untuk organisasi atau unit organisasi di AWS Organizations. Untuk informasi selengkapnya, lihat [Kebijakan kontrol layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) dalam *Panduan Pengguna AWS Organizations *.
+ **Kebijakan kontrol sumber daya (RCPs)** — Tetapkan izin maksimum yang tersedia untuk sumber daya di akun Anda. Untuk informasi selengkapnya, lihat [Kebijakan kontrol sumber daya (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) di *Panduan AWS Organizations Pengguna*.
+ **Kebijakan sesi** – Kebijakan lanjutan yang diteruskan sebagai parameter saat membuat sesi sementara untuk peran atau pengguna terfederasi. Untuk informasi selengkapnya, lihat [Kebijakan sesi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) dalam *Panduan Pengguna IAM*.

### Berbagai jenis kebijakan
<a name="security_iam_access-manage-multiple-policies"></a>

Ketika beberapa jenis kebijakan berlaku pada suatu permintaan, izin yang dihasilkan lebih rumit untuk dipahami. Untuk mempelajari cara AWS menentukan apakah akan mengizinkan permintaan saat beberapa jenis kebijakan terlibat, lihat [Logika evaluasi kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) di *Panduan Pengguna IAM*.

# Cara kerja Amazon DynamoDB dengan IAM
<a name="security_iam_service-with-iam"></a>

Sebelum Anda menggunakan IAM untuk mengelola akses ke DynamoDB, pelajari fitur IAM apakah yang terdapat untuk digunakan pada DynamoDB.






| Fitur IAM | Dukungan DynamoDB | 
| --- | --- | 
|  [Kebijakan berbasis identitas](#security_iam_service-with-iam-id-based-policies)  |   Ya  | 
|  [Kebijakan berbasis sumber daya](#security_iam_service-with-iam-resource-based-policies)  |   Ya  | 
|  [Tindakan kebijakan](#security_iam_service-with-iam-id-based-policies-actions)  |   Ya  | 
|  [Sumber daya kebijakan](#security_iam_service-with-iam-id-based-policies-resources)  |   Ya  | 
|  [Kunci kondisi kebijakan](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   Ya  | 
|  [ACLs](#security_iam_service-with-iam-acls)  |   Tidak   | 
|  [ABAC (tanda dalam kebijakan)](#security_iam_service-with-iam-tags)  |   Ya  | 
|  [Kredensial sementara](#security_iam_service-with-iam-roles-tempcreds)  |   Ya  | 
|  [Izin principal](#security_iam_service-with-iam-principal-permissions)  |   Ya  | 
|  [Peran layanan](#security_iam_service-with-iam-roles-service)  |   Ya  | 
|  [Peran terkait layanan](#security_iam_service-with-iam-roles-service-linked)  |   Ya  | 

*Untuk mendapatkan tampilan tingkat tinggi tentang cara kerja DynamoDB dan layanan AWS lainnya dengan sebagian besar fitur IAM, [AWS lihat layanan yang bekerja dengan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) IAM di Panduan Pengguna IAM.*

## Kebijakan berbasis identitas untuk DynamoDB
<a name="security_iam_service-with-iam-id-based-policies"></a>

**Mendukung kebijakan berbasis identitas**: Ya

Kebijakan berbasis identitas adalah dokumen kebijakan izin JSON yang dapat Anda lampirkan ke sebuah identitas, seperti pengguna IAM, grup pengguna IAM, atau peran IAM. Kebijakan ini mengontrol jenis tindakan yang dapat dilakukan oleh pengguna dan peran, di sumber daya mana, dan berdasarkan kondisi seperti apa. Untuk mempelajari cara membuat kebijakan berbasis identitas, lihat [Tentukan izin IAM kustom dengan kebijakan terkelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dalam *Panduan Pengguna IAM*.

Dengan kebijakan berbasis identitas IAM, Anda dapat menentukan secara spesifik apakah tindakan dan sumber daya diizinkan atau ditolak, serta kondisi yang menjadi dasar dikabulkan atau ditolaknya tindakan tersebut. Untuk mempelajari semua elemen yang dapat Anda gunakan dalam kebijakan JSON, lihat [Referensi elemen kebijakan JSON IAM ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) dalam *Panduan Pengguna IAM*.

### Contoh kebijakan berbasis identitas untuk DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Untuk melihat contoh kebijakan berbasis identitas DynamoDB, silakan lihat [Contoh kebijakan berbasis identitas untuk Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Kebijakan berbasis sumber daya dalam DynamoDB
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**Mendukung kebijakan berbasis sumber daya**: Ya

Kebijakan berbasis sumber daya adalah dokumen kebijakan JSON yang Anda lampirkan ke sumber daya. Contoh kebijakan berbasis sumber daya adalah *kebijakan kepercayaan peran* IAM dan *kebijakan bucket* Amazon S3. Dalam layanan yang mendukung kebijakan berbasis sumber daya, administrator layanan dapat menggunakannya untuk mengontrol akses ke sumber daya tertentu. Untuk sumber daya tempat kebijakan dilampirkan, kebijakan menentukan tindakan apa yang dapat dilakukan oleh principal tertentu pada sumber daya tersebut dan dalam kondisi apa. Anda harus [menentukan principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dalam kebijakan berbasis sumber daya. Prinsipal dapat mencakup akun, pengguna, peran, pengguna federasi, atau. Layanan AWS

Untuk mengaktifkan akses lintas akun, Anda dapat menentukan secara spesifik seluruh akun atau entitas IAM di akun lain sebagai principal dalam kebijakan berbasis sumber daya. Untuk informasi selengkapnya, lihat [Akses sumber daya lintas akun di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dalam *Panduan Pengguna IAM*.

## Tindakan kebijakan untuk DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**Mendukung tindakan kebijakan:** Ya

Administrator dapat menggunakan kebijakan AWS JSON untuk menentukan siapa yang memiliki akses ke apa. Yaitu, di mana **utama** dapat melakukan **tindakan** pada **sumber daya**, dan dalam **kondisi apa**.

Elemen `Action` dari kebijakan JSON menjelaskan tindakan yang dapat Anda gunakan untuk mengizinkan atau menolak akses dalam sebuah kebijakan. Menyertakan tindakan dalam kebijakan untuk memberikan izin untuk melakukan operasi terkait.



Untuk melihat daftar tindakan DynamoDB, lihat [Tindakan yang ditentukan oleh Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions) di *Referensi Otorisasi Layanan*.

Tindakan kebijakan di DynamoDB menggunakan prefiks berikut sebelum tindakan:

```
aws
```

Untuk menetapkan secara spesifik beberapa tindakan dalam satu pernyataan, pisahkan tindakan tersebut dengan koma.

```
"Action": [
      "aws:action1",
      "aws:action2"
         ]
```





Untuk melihat contoh kebijakan berbasis identitas DynamoDB, silakan lihat [Contoh kebijakan berbasis identitas untuk Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Sumber daya kebijakan untuk DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**Mendukung sumber daya kebijakan:** Ya

Administrator dapat menggunakan kebijakan AWS JSON untuk menentukan siapa yang memiliki akses ke apa. Yaitu, di mana **utama** dapat melakukan **tindakan** pada **sumber daya**, dan dalam **kondisi apa**.

Elemen kebijakan JSON `Resource` menentukan objek yang menjadi target penerapan tindakan. Praktik terbaiknya, tentukan sumber daya menggunakan [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). Untuk tindakan yang tidak mendukung izin di tingkat sumber daya, gunakan wildcard (\$1) untuk menunjukkan bahwa pernyataan tersebut berlaku untuk semua sumber daya.

```
"Resource": "*"
```

*Untuk melihat daftar jenis sumber daya DynamoDB dan ARNs jenisnya, [lihat Sumber daya yang ditentukan oleh Amazon DynamoDB di Referensi Otorisasi Layanan](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-resources-for-iam-policies).* Untuk mempelajari tindakan mana yang dapat Anda tentukan ARN setiap sumber daya, lihat [Tindakan yang ditentukan oleh Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions).





Untuk melihat contoh kebijakan berbasis identitas DynamoDB, silakan lihat [Contoh kebijakan berbasis identitas untuk Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Kunci persyaratan kebijakan untuk DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**Mendukung kunci kondisi kebijakan khusus layanan:** Yes

Administrator dapat menggunakan kebijakan AWS JSON untuk menentukan siapa yang memiliki akses ke apa. Yaitu, **principal** dapat melakukan **tindakan** pada suatu **sumber daya**, dan dalam suatu **syarat**.

Elemen `Condition` menentukan ketika pernyataan dieksekusi berdasarkan kriteria yang ditetapkan. Anda dapat membuat ekspresi bersyarat yang menggunakan [operator kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), misalnya sama dengan atau kurang dari, untuk mencocokkan kondisi dalam kebijakan dengan nilai-nilai yang diminta. Untuk melihat semua kunci kondisi AWS global, lihat [kunci konteks kondisi AWS global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) di *Panduan Pengguna IAM*.

Untuk melihat daftar kunci persyaratan DynamoDB, lihat [Kunci persyaratan untuk Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-policy-keys) dalam *Referensi Otorisasi Layanan*. Untuk mempelajari tindakan dan sumber daya yang dapat Anda gunakan dengan kunci kondisi, lihat [Tindakan yang ditentukan oleh Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions).

Untuk melihat contoh kebijakan berbasis identitas DynamoDB, silakan lihat [Contoh kebijakan berbasis identitas untuk Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Daftar kontrol akses (ACLs) di DynamoDB
<a name="security_iam_service-with-iam-acls"></a>

**Mendukung ACLs:** Tidak 

Access control lists (ACLs) mengontrol prinsipal mana (anggota akun, pengguna, atau peran) yang memiliki izin untuk mengakses sumber daya. ACLs mirip dengan kebijakan berbasis sumber daya, meskipun mereka tidak menggunakan format dokumen kebijakan JSON.

## Kontrol akses berbasis atribut (ABAC) dengan DynamoDB
<a name="security_iam_service-with-iam-tags"></a>

**Mendukung ABAC (tanda dalam kebijakan):** Ya

Kontrol akses berbasis atribut (ABAC) adalah strategi otorisasi yang menentukan izin berdasarkan atribut tanda. Anda dapat melampirkan tag ke entitas dan AWS sumber daya IAM, lalu merancang kebijakan ABAC untuk mengizinkan operasi saat tag prinsipal cocok dengan tag pada sumber daya.

Untuk mengendalikan akses berdasarkan tanda, berikan informasi tentang tanda di [elemen kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dari kebijakan menggunakan kunci kondisi `aws:ResourceTag/key-name`, `aws:RequestTag/key-name`, atau `aws:TagKeys`.

Jika sebuah layanan mendukung ketiga kunci kondisi untuk setiap jenis sumber daya, nilainya adalah **Ya** untuk layanan tersebut. Jika suatu layanan mendukung ketiga kunci kondisi untuk hanya beberapa jenis sumber daya, nilainya adalah **Parsial**.

Untuk informasi selengkapnya tentang ABAC, lihat [Tentukan izin dengan otorisasi ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) dalam *Panduan Pengguna IAM.* Untuk melihat tutorial yang menguraikan langkah-langkah pengaturan ABAC, lihat [Menggunakan kontrol akses berbasis atribut (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) dalam *Panduan Pengguna IAM*.

## Menggunakan Kredensial sementara dengan DynamoDB
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**Mendukung kredensial sementara:** Ya

Kredensi sementara menyediakan akses jangka pendek ke AWS sumber daya dan secara otomatis dibuat saat Anda menggunakan federasi atau beralih peran. AWS merekomendasikan agar Anda secara dinamis menghasilkan kredensyal sementara alih-alih menggunakan kunci akses jangka panjang. Untuk informasi selengkapnya, lihat [Kredensial keamanan sementara di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) dan [Layanan AWS yang berfungsi dengan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) dalam *Panduan Pengguna IAM*.

## Izin pengguna utama lintas layanan untuk DynamoDB
<a name="security_iam_service-with-iam-principal-permissions"></a>

**Mendukung sesi akses terusan (FAS):** Ya

 Sesi akses teruskan (FAS) menggunakan izin dari pemanggilan utama Layanan AWS, dikombinasikan dengan permintaan Layanan AWS untuk membuat permintaan ke layanan hilir. Untuk detail kebijakan ketika mengajukan permintaan FAS, lihat [Sesi akses maju](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 

## Peran layanan untuk DynamoDB
<a name="security_iam_service-with-iam-roles-service"></a>

**Mendukung peran layanan:** Ya

 Peran layanan adalah [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) yang diambil oleh sebuah layanan untuk melakukan tindakan atas nama Anda. Administrator IAM dapat membuat, mengubah, dan menghapus peran layanan dari dalam IAM. Untuk informasi selengkapnya, lihat [Buat sebuah peran untuk mendelegasikan izin ke Layanan AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dalam *Panduan pengguna IAM*. 

**Awas**  
Mengubah izin untuk sebuah peran layanan dapat merusak fungsionalitas DynamoDB. Edit peran layanan hanya jika DynamoDB memberikan panduan untuk melakukannya.

## Peran terkait layanan untuk DynamoDB
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**Mendukung peran terkait layanan**: Ya

 Peran terkait layanan adalah jenis peran layanan yang ditautkan ke. Layanan AWS Layanan tersebut dapat menjalankan peran untuk melakukan tindakan atas nama Anda. Peran terkait layanan muncul di Anda Akun AWS dan dimiliki oleh layanan. Administrator IAM dapat melihat, tetapi tidak dapat mengedit izin untuk peran terkait layanan. 

Untuk detail tentang pembuatan atau manajemen peran terkait layanan, lihat [Layanan AWS yang berfungsi dengan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). Cari layanan dalam tabel yang memiliki `Yes` di kolom **Peran terkait layanan**. Pilih tautan **Ya** untuk melihat dokumentasi peran terkait layanan untuk layanan tersebut.

### Peran terkait layanan yang didukung di DynamoDB
<a name="security_iam_service-with-iam-roles-service-linked-supported-by-dynamodb"></a>

Peran terkait layanan berikut didukung di DynamoDB.
+ DynamoDB menggunakan **AWSServiceRoleForDynamoDBReplication**peran terkait layanan untuk replikasi tabel global di seluruh. Wilayah AWS Lihat [DynamoDB tabel global keamanan](globaltables-security.md) untuk informasi selengkapnya tentang **AWSServiceRoleForDynamoDBReplication**peran terkait layanan.
+ DynamoDB Accelerator (DAX) menggunakan ** AWSServiceRoleForperan** terkait layanan DAX untuk mengonfigurasi dan memelihara kluster DAX. Lihat [Menggunakan peran IAM tertaut layanan untuk DAX](using-service-linked-roles.md) untuk informasi selengkapnya tentang peran **AWSServiceRoleForterkait layanan DAX**.

Selain peran terkait layanan DynamoDB ini, DynamoDB menggunakan layanan Application Auto Scaling untuk mengelola pengaturan throughput secara otomatis pada tabel mode kapasitas yang disediakan. Layanan Application Auto Scaling menggunakan peran terkait layanan ** AWSServiceRoleForApplicationAutoScaling\$1DynamoDBTable**untuk mengelola pengaturan throughput pada tabel DynamoDB yang mengaktifkan penskalaan otomatis. Lihat [Peran terkait layanan untuk Application Auto Scaling untuk](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html) informasi selengkapnya.

# Contoh kebijakan berbasis identitas untuk Amazon DynamoDB
<a name="security_iam_id-based-policy-examples"></a>

Secara default, pengguna dan peran tidak memiliki izin untuk membuat atau melakukan modifikasi atas sumber daya DynamoDB. Untuk memberikan izin kepada pengguna untuk melakukan tindakan di sumber daya yang mereka perlukan, administrator IAM dapat membuat kebijakan IAM.

*Untuk mempelajari cara membuat kebijakan berbasis identitas IAM dengan menggunakan contoh dokumen kebijakan JSON ini, lihat [Membuat kebijakan IAM (konsol) di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html).*

*Untuk detail tentang tindakan dan jenis sumber daya yang ditentukan oleh DynamoDB, termasuk format untuk setiap jenis sumber daya, [lihat Kunci tindakan, sumber daya, dan kondisi untuk Amazon DynamoDB dalam Referensi Otorisasi Layanan](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html). ARNs *

**Topics**
+ [Praktik terbaik kebijakan](#security_iam_service-with-iam-policy-best-practices)
+ [Menggunakan konsol DynamoDB](#security_iam_id-based-policy-examples-console)
+ [Mengizinkan pengguna melihat izin mereka sendiri](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Menggunakan kebijakan berbasis identitas dengan Amazon DynamoDB](using-identity-based-policies.md)

## Praktik terbaik kebijakan
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Kebijakan berbasis identitas menentukan apakah seseorang dapat membuat, mengakses, atau menghapus sumber daya DynamoDB yang ada di akun Anda. Tindakan ini mengenakan biaya kepada Akun AWS Anda. Ketika Anda membuat atau mengedit kebijakan berbasis identitas, ikuti panduan dan rekomendasi ini:
+ **Mulailah dengan kebijakan AWS terkelola dan beralih ke izin dengan hak istimewa paling sedikit — Untuk mulai memberikan izin** kepada pengguna dan beban kerja Anda, gunakan *kebijakan AWS terkelola* yang memberikan izin untuk banyak kasus penggunaan umum. Mereka tersedia di Anda Akun AWS. Kami menyarankan Anda mengurangi izin lebih lanjut dengan menentukan kebijakan yang dikelola AWS pelanggan yang khusus untuk kasus penggunaan Anda. Untuk informasi selengkapnya, lihat [Kebijakan yang dikelola AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) atau [Kebijakan yang dikelola AWS untuk fungsi tugas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) dalam *Panduan Pengguna IAM*.
+ **Menerapkan izin dengan hak akses paling rendah** – Ketika Anda menetapkan izin dengan kebijakan IAM, hanya berikan izin yang diperlukan untuk melakukan tugas. Anda melakukannya dengan mendefinisikan tindakan yang dapat diambil pada sumber daya tertentu dalam kondisi tertentu, yang juga dikenal sebagai *izin dengan hak akses paling rendah*. Untuk informasi selengkapnya tentang cara menggunakan IAM untuk mengajukan izin, lihat [Kebijakan dan izin dalam IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) dalam *Panduan Pengguna IAM*.
+ **Gunakan kondisi dalam kebijakan IAM untuk membatasi akses lebih lanjut** – Anda dapat menambahkan suatu kondisi ke kebijakan Anda untuk membatasi akses ke tindakan dan sumber daya. Sebagai contoh, Anda dapat menulis kondisi kebijakan untuk menentukan bahwa semua permintaan harus dikirim menggunakan SSL. Anda juga dapat menggunakan ketentuan untuk memberikan akses ke tindakan layanan jika digunakan melalui yang spesifik Layanan AWS, seperti CloudFormation. Untuk informasi selengkapnya, lihat [Elemen kebijakan JSON IAM: Kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dalam *Panduan Pengguna IAM*.
+ **Gunakan IAM Access Analyzer untuk memvalidasi kebijakan IAM Anda untuk memastikan izin yang aman dan fungsional** – IAM Access Analyzer memvalidasi kebijakan baru dan yang sudah ada sehingga kebijakan tersebut mematuhi bahasa kebijakan IAM (JSON) dan praktik terbaik IAM. IAM Access Analyzer menyediakan lebih dari 100 pemeriksaan kebijakan dan rekomendasi yang dapat ditindaklanjuti untuk membantu Anda membuat kebijakan yang aman dan fungsional. Untuk informasi selengkapnya, lihat [Validasi kebijakan dengan IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) dalam *Panduan Pengguna IAM*.
+ **Memerlukan otentikasi multi-faktor (MFA)** - Jika Anda memiliki skenario yang mengharuskan pengguna IAM atau pengguna root di Anda, Akun AWS aktifkan MFA untuk keamanan tambahan. Untuk meminta MFA ketika operasi API dipanggil, tambahkan kondisi MFA pada kebijakan Anda. Untuk informasi selengkapnya, lihat [Amankan akses API dengan MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) dalam *Panduan Pengguna IAM*.

Untuk informasi selengkapnya tentang praktik terbaik dalam IAM, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam *Panduan Pengguna IAM*.

## Menggunakan konsol DynamoDB
<a name="security_iam_id-based-policy-examples-console"></a>

Untuk mengakses konsol Amazon DynamoDB, Anda harus memiliki serangkaian izin minimum. Izin ini harus memungkinkan Anda untuk daftar dan melihat rincian tentang sumber daya DynamoDB di Anda. Akun AWS Jika Anda membuat kebijakan berbasis identitas yang lebih ketat daripada izin minimum yang diperlukan, konsol tidak akan berfungsi sebagaimana mestinya untuk entitas (pengguna atau peran) dengan kebijakan tersebut.

Anda tidak perlu mengizinkan izin konsol minimum untuk pengguna yang melakukan panggilan hanya ke AWS CLI atau AWS API. Sebaliknya, izinkan akses hanya ke tindakan yang cocok dengan operasi API yang coba dilakukan.

Untuk memastikan bahwa pengguna dan peran masih dapat menggunakan konsol DynamoDB, lampirkan juga DynamoDB atau kebijakan terkelola ke `ConsoleAccess` entitas `ReadOnly` AWS . Untuk informasi selengkapnya, lihat [Menambahkan izin ke pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) dalam *Panduan Pengguna IAM*.

## Mengizinkan pengguna melihat izin mereka sendiri
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Contoh ini menunjukkan cara membuat kebijakan yang mengizinkan pengguna IAM melihat kebijakan inline dan terkelola yang dilampirkan ke identitas pengguna mereka. Kebijakan ini mencakup izin untuk menyelesaikan tindakan ini di konsol atau menggunakan API atau secara terprogram. AWS CLI AWS 

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# Menggunakan kebijakan berbasis identitas dengan Amazon DynamoDB
<a name="using-identity-based-policies"></a>

Topik ini mencakup penggunaan kebijakan berbasis identitas AWS Identity and Access Management (IAM) dengan Amazon DynamoDB dan memberikan contoh. Contoh ini menunjukkan bagaimana administrator akun dapat melampirkan kebijakan izin ke identitas IAM (pengguna, grup, dan peran) dan dengan demikian memberikan izin untuk melakukan operasi pada sumber daya Amazon DynamoDB.

Bagian dalam topik ini mencakup hal berikut:
+ [Izin IAM diperlukan untuk menggunakan konsol Amazon DynamoDB](#console-permissions)
+ [AWS kebijakan IAM terkelola (telah ditentukan) untuk Amazon DynamoDB](#access-policy-examples-aws-managed)
+ [Contoh kebijakan yang dikelola pelanggan](#access-policy-examples-for-sdk-cli)



Berikut adalah contoh kebijakan izin.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeQueryScanBooksTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:Query",
                "dynamodb:Scan"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Books"
        }
    ]
}
```

------

 Kebijakan sebelumnya memiliki satu pernyataan yang memberikan izin untuk tiga tindakan DynamoDB (`dynamodb:DescribeTable`,, dan`dynamodb:Scan`) pada tabel di `us-west-2` AWS Wilayah`dynamodb:Query`, yang dimiliki oleh akun yang ditentukan oleh. AWS `account-id` *Amazon Resource Name (ARN)* dalam nilai `Resource`menentukan tabel tempat izin berlaku.

## Izin IAM diperlukan untuk menggunakan konsol Amazon DynamoDB
<a name="console-permissions"></a>

Untuk bekerja dengan konsol DynamoDB, pengguna harus memiliki set izin minimum yang memungkinkan pengguna untuk bekerja dengan sumber daya DynamoDB AWS akun mereka. Selain izin DynamoDB ini, konsol memerlukan izin:
+  CloudWatch Izin Amazon untuk menampilkan metrik dan grafik.
+ AWS Data Pipeline izin untuk mengekspor dan mengimpor data DynamoDB. 
+  AWS Identity and Access Management izin untuk mengakses peran yang diperlukan untuk ekspor dan impor.
+ Izin Layanan Pemberitahuan Sederhana Amazon untuk memberi tahu Anda setiap kali CloudWatch alarm dipicu.
+ AWS Lambda izin untuk memproses catatan DynamoDB Streams.

Jika Anda membuat kebijakan IAM yang lebih ketat daripada izin minimum yang diperlukan, konsol tidak akan berfungsi sebagaimana mestinya bagi pengguna dengan kebijakan IAM tersebut. Untuk memastikan bahwa pengguna tersebut masih dapat menggunakan konsol DynamoDB, lampirkan juga kebijakan terkelola `AmazonDynamoDBReadOnlyAccess` AWS ke pengguna, seperti yang dijelaskan dalam. [AWS kebijakan IAM terkelola (telah ditentukan) untuk Amazon DynamoDB](#access-policy-examples-aws-managed)

Anda tidak perlu mengizinkan izin konsol minimum untuk pengguna yang melakukan panggilan hanya ke AWS CLI atau Amazon DynamoDB API.

**catatan**  
 Jika Anda merujuk ke titik akhir VPC, Anda juga perlu mengotorisasi panggilan DescribeEndpoints API untuk prinsipal IAM yang meminta dengan tindakan IAM (dynamodb:). DescribeEndpoints Untuk mengetahui informasi selengkapnya, lihat [Kebijakan yang diperlukan untuk titik akhir](inter-network-traffic-privacy.md#inter-network-traffic-DescribeEndpoints). 

## AWS kebijakan IAM terkelola (telah ditentukan) untuk Amazon DynamoDB
<a name="access-policy-examples-aws-managed"></a>

AWS mengatasi beberapa kasus penggunaan umum dengan menyediakan kebijakan IAM mandiri yang dibuat dan dikelola oleh. AWS Kebijakan AWS terkelola ini memberikan izin yang diperlukan untuk kasus penggunaan umum sehingga Anda dapat menghindari keharusan menyelidiki izin mana yang diperlukan. Untuk informasi selengkapnya, lihat [Kebijakan Terkelola AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dalam *Panduan Pengguna IAM*.

Kebijakan AWS terkelola berikut, yang dapat Anda lampirkan ke pengguna di akun Anda, khusus untuk DynamoDB dan dikelompokkan berdasarkan skenario kasus penggunaan:
+ **AmazonDynamoDBReadOnlyAccess**— Memberikan akses hanya-baca ke sumber daya DynamoDB melalui file. Konsol Manajemen AWS
+ **AmazonDynamoDBFullAkses** - Memberikan akses penuh ke sumber daya DynamoDB melalui file. Konsol Manajemen AWS

Anda dapat meninjau kebijakan izin AWS terkelola ini dengan masuk ke konsol IAM dan mencari kebijakan tertentu di sana.

**penting**  
Praktik terbaiknya adalah membuat kebijakan IAM khusus yang memberikan [hak akses paling rendah ](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) kepada pengguna, peran, atau grup yang memerlukannya. 

## Contoh kebijakan yang dikelola pelanggan
<a name="access-policy-examples-for-sdk-cli"></a>

Di bagian ini, Anda dapat menemukan contoh kebijakan yang memberikan izin untuk berbagai tindakan DynamoDB. Kebijakan ini berfungsi saat Anda menggunakan AWS SDKs atau AWS CLI. Saat menggunakan konsol, Anda perlu memberikan izin tambahan yang khusus untuk konsol tersebut. Untuk informasi selengkapnya, lihat [Izin IAM diperlukan untuk menggunakan konsol Amazon DynamoDB](#console-permissions).

**catatan**  
Semua contoh kebijakan berikut menggunakan salah satu AWS Wilayah dan berisi nama akun IDs dan tabel fiktif.

Contoh:
+ [Kebijakan IAM untuk memberikan izin untuk semua tindakan DynamoDB pada tabel](grant-permissions-to-any-action-on-table.md)
+ [Kebijakan IAM untuk memberikan izin hanya-baca pada item di tabel DynamoDB](read-only-permissions-on-table-items.md)
+ [Kebijakan IAM untuk memberikan akses ke tabel DynamoDB tertentu dan indeksnya](iam-policy-specific-table-indexes.md)
+ [Kebijakan IAM untuk membaca, menulis, memperbarui, dan menghapus akses pada tabel DynamoDB](iam-policy-example-data-crud.md)
+ [Kebijakan IAM untuk memisahkan lingkungan DynamoDB di akun yang sama AWS](iam-policy-separate-environments.md)
+ [Kebijakan IAM untuk mencegah pembelian kapasitas terpesan DynamoDB](iam-prevent-purchase-reserved-capacity.md)
+ [Kebijakan IAM untuk memberikan akses baca hanya untuk DynamoDB stream (bukan untuk tabel)](iam-policy-read-stream-only.md)
+ [Kebijakan IAM untuk mengizinkan AWS Lambda fungsi mengakses catatan aliran DynamoDB](iam-policy-example-lamda-process-dynamodb-streams.md)
+ [Kebijakan IAM untuk akses baca dan tulis ke klaster DynamoDB Accelerator (DAX)](iam-policy-example-read-write-dax-access.md)

 *Panduan Pengguna IAM*, mencakup [tiga contoh DynamoDB tambahan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html):
+ [Amazon DynamoDB: Mengizinkan Akses ke Tabel Tertentu](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_specific-table.html)
+ [Amazon DynamoDB: Mengizinkan Akses ke Kolom Tertentu](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_columns.html)
+ [Amazon DynamoDB: Mengizinkan Akses Tingkat Baris ke DynamoDB Berdasarkan ID Amazon Cognito](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_rows.html)

# Kebijakan IAM untuk memberikan izin untuk semua tindakan DynamoDB pada tabel
<a name="grant-permissions-to-any-action-on-table"></a>

Kebijakan berikut memberikan izin untuk *semua* tindakan DynamoDB pada tabel yang disebut `Books`. Sumber daya ARN yang ditentukan dalam `Resource` mengidentifikasi tabel di Wilayah tertentu. AWS Jika Anda mengganti nama tabel `Books` dalam ARN `Resource` dengan karakter wildcard (\$1), *semua* tindakan DynamoDB diizinkan pada *semua* tabel di akun. Pertimbangkan dengan cermat kemungkinan implikasi keamanan sebelum menggunakan karakter wildcard pada kebijakan ini atau kebijakan IAM apa pun.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllAPIActionsOnBooks",
            "Effect": "Allow",
            "Action": "dynamodb:*",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        }
    ]
}
```

------

**catatan**  
Ini adalah contoh penggunaan karakter wildcard (\$1) untuk mengizinkan *semua* tindakan, termasuk administrasi, operasi data, pemantauan, dan pembelian kapasitas terpesan DynamoDB. Sebaliknya, praktik terbaiknya adalah menentukan secara eksplisit setiap tindakan yang akan diberikan dan hanya tindakan yang dibutuhkan pengguna, peran, atau grup tersebut.

# Kebijakan IAM untuk memberikan izin hanya-baca pada item di tabel DynamoDB
<a name="read-only-permissions-on-table-items"></a>

Kebijakan izin berikut hanya memberikan izin untuk tindakan `GetItem`, `BatchGetItem`, `Scan`, `Query`, dan `ConditionCheckItem` DynamoDB, dan sebagai hasilnya, menetapkan akses hanya-baca pada tabel `Books`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadOnlyAPIActionsOnBooks",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:ConditionCheckItem"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        }
    ]
}
```

------

# Kebijakan IAM untuk memberikan akses ke tabel DynamoDB tertentu dan indeksnya
<a name="iam-policy-specific-table-indexes"></a>

Kebijakan berikut ini memberikan izin untuk tindakan modifikasi data pada tabel DynamoDB yang disebut `Books` dan semua indeks tabel tersebut. Untuk informasi selengkapnya tentang cara kerja indeks, lihat [Meningkatkan akses data dengan indeks sekunder di DynamoDB](SecondaryIndexes.md).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessTableAllIndexesOnBooks",
            "Effect": "Allow",
            "Action": [
              "dynamodb:PutItem",
              "dynamodb:UpdateItem",
              "dynamodb:DeleteItem",
              "dynamodb:BatchWriteItem",
              "dynamodb:GetItem",
              "dynamodb:BatchGetItem",
              "dynamodb:Scan",
              "dynamodb:Query",
              "dynamodb:ConditionCheckItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*"
            ]
        }
    ]
}
```

------

# Kebijakan IAM untuk membaca, menulis, memperbarui, dan menghapus akses pada tabel DynamoDB
<a name="iam-policy-example-data-crud"></a>

Gunakan kebijakan ini jika Anda perlu mengizinkan aplikasi Anda membuat, membaca, memperbarui, dan menghapus data di tabel, indeks, dan aliran Amazon DynamoDB. Gantikan nama AWS Region, ID akun Anda, dan nama tabel atau karakter wildcard (\$1) jika sesuai.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBIndexAndStreamAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetShardIterator",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:ListStreams"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/stream/*"
            ]
        },
        {
            "Sid": "DynamoDBTableAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:PutItem",
                "dynamodb:DescribeTable",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        },
        {
            "Sid": "DynamoDBDescribeLimitsAccess",
            "Effect": "Allow",
            "Action": "dynamodb:DescribeLimits",
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*"
            ]
        }
    ]
}
```

------

Untuk memperluas kebijakan ini untuk mencakup semua tabel DynamoDB di AWS semua Wilayah untuk akun ini, gunakan wildcard (\$1) untuk Region dan nama tabel. Contoh:

```
"Resource":[
                "arn:aws:dynamodb:*:123456789012:table/*",
                "arn:aws:dynamodb:*:123456789012:table/*/index/*"
                ]
```

# Kebijakan IAM untuk memisahkan lingkungan DynamoDB di akun yang sama AWS
<a name="iam-policy-separate-environments"></a>

Misalkan Anda memiliki lingkungan terpisah di mana setiap lingkungan memelihara versi tabelnya sendiri yang bernama `ProductCatalog`. Jika Anda membuat dua `ProductCatalog` tabel di AWS akun yang sama, bekerja di satu lingkungan dapat memengaruhi lingkungan lain karena cara pengaturan izin. Misalnya, kuota pada jumlah operasi bidang kontrol bersamaan (seperti`CreateTable`) ditetapkan pada tingkat AWS akun.

Sebagai hasilnya, setiap tindakan di satu lingkungan mengurangi jumlah operasi yang tersedia di lingkungan lain. Ada juga risiko bahwa kode di satu lingkungan mungkin secara tidak sengaja mengakses tabel di lingkungan lain.

**catatan**  
Jika Anda ingin memisahkan beban kerja produksi dan pengujian untuk membantu mengontrol potensi "radius ledakan" suatu peristiwa, praktik terbaiknya adalah membuat akun AWS terpisah untuk beban kerja pengujian dan produksi. Untuk informasi selengkapnya, lihat [Manajemen dan Pemisahan Akun AWS](https://docs.aws.amazon.com//wellarchitected/latest/security-pillar/aws-account-management-and-separation.html).

Misalkan Anda memiliki dua pengembang, Amit dan Alice, yang sedang menguji tabel `ProductCatalog`. Alih-alih setiap pengembang memerlukan AWS akun terpisah, pengembang Anda dapat berbagi AWS akun pengujian yang sama. Di akun pengujian ini, Anda dapat membuat salinan tabel yang sama untuk dikerjakan oleh setiap pengembang, seperti `Alice_ProductCatalog` dan `Amit_ProductCatalog`. Dalam hal ini, Anda dapat membuat pengguna Alice dan Amit di AWS akun yang Anda buat untuk lingkungan pengujian. Anda kemudian dapat memberikan izin kepada pengguna ini untuk melakukan tindakan DynamoDB pada tabel yang mereka miliki. 

Untuk memberikan izin pengguna IAM ini, Anda dapat melakukan salah satu hal berikut:
+ Buat kebijakan terpisah untuk setiap pengguna, lalu lampirkan setiap kebijakan ke penggunanya secara terpisah. Misalnya, Anda dapat melampirkan kebijakan berikut kepada pengguna Alice untuk mengizinkannya mengakses tindakan DynamoDB pada tabel `Alice_ProductCatalog`: 

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllAPIActionsOnAliceTable",
              "Effect": "Allow",
              "Action": [
                "dynamodb:DeleteItem",
                "dynamodb:DescribeContributorInsights",
                "dynamodb:RestoreTableToPointInTime",
                "dynamodb:ListTagsOfResource",
                "dynamodb:CreateTableReplica",
                "dynamodb:UpdateContributorInsights",
                "dynamodb:CreateBackup",
                "dynamodb:DeleteTable",
                "dynamodb:UpdateTableReplicaAutoScaling",
                "dynamodb:UpdateContinuousBackups",
                "dynamodb:TagResource",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:DescribeContinuousBackups",
                "dynamodb:BatchGetItem",
                "dynamodb:UpdateTimeToLive",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:UntagResource",
                "dynamodb:PutItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteTableReplica",
                "dynamodb:DescribeTimeToLive",
                "dynamodb:RestoreTableFromBackup",
                "dynamodb:UpdateTable",
                "dynamodb:DescribeTableReplicaAutoScaling",
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:DescribeLimits",
                "dynamodb:ListStreams"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Alice_ProductCatalog/*"
          }
      ]
  }
  ```

------

  Kemudian, Anda dapat membuat kebijakan serupa dengan sumber daya berbeda (tabel `Amit_ProductCatalog`) untuk pengguna Amit. 
+ Daripada melampirkan kebijakan ke pengguna individual, Anda dapat menggunakan variabel kebijakan IAM untuk menulis kebijakan tunggal dan melampirkannya ke grup. Anda perlu membuat grup dan, untuk contoh ini, menambahkan pengguna Alice dan Amit ke grup. Contoh berikut memberikan izin untuk melakukan semua tindakan DynamoDB pada tabel `${aws:username}_ProductCatalog`. Variabel kebijakan `${aws:username}` diganti dengan nama pengguna pemohon ketika kebijakan dievaluasi. Misalnya, jika Alice mengirimkan permintaan untuk menambahkan item, tindakan tersebut hanya diperbolehkan jika Alice menambahkan item ke tabel `Alice_ProductCatalog`. 

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ActionsOnUserSpecificTable",
              "Effect": "Allow",
              "Action": [
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:ConditionCheckItem"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_ProductCatalog"
          },
          {
              "Sid": "AdditionalPrivileges",
              "Effect": "Allow",
              "Action": [
                  "dynamodb:ListTables",
                  "dynamodb:DescribeTable",
                  "dynamodb:DescribeContributorInsights"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/*"
          }
      ]
  }
  ```

------

**catatan**  
Saat menggunakan variabel kebijakan IAM, Anda harus secara eksplisit menentukan bahasa kebijakan IAM versi `2012-10-17` dalam kebijakan. Versi default bahasa kebijakan IAM (`2008-10-17`) tidak mendukung variabel kebijakan. 

Alih-alih mengidentifikasi tabel tertentu sebagai sumber daya seperti yang biasa Anda lakukan, Anda bisa menggunakan karakter wildcard (\$1) untuk memberikan izin pada semua tabel yang nama tabelnya diawali dengan pengguna yang membuat permintaan, seperti yang ditunjukkan dalam contoh berikut.

```
"Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_*"
```

# Kebijakan IAM untuk mencegah pembelian kapasitas terpesan DynamoDB
<a name="iam-prevent-purchase-reserved-capacity"></a>

Dengan kapasitas terpesan Amazon DynamoDB, Anda membayar biaya satu kali di muka dan berkomitmen untuk membayar tingkat penggunaan minimum dengan penghematan yang signifikan selama jangka waktu tertentu. Anda dapat menggunakan Konsol Manajemen AWS untuk melihat dan membeli kapasitas cadangan. Namun, Anda mungkin tidak ingin semua pengguna di organisasi Anda dapat membeli kapasitas terpesan. Untuk informasi selengkapnya tentang kapasitas terpesan, lihat [harga Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing).

DynamoDB menyediakan operasi API berikut untuk mengendalikan akses ke manajemen kapasitas terpesan:
+ `dynamodb:DescribeReservedCapacity` – Mengembalikan pembelian kapasitas terpesan yang saat ini berlaku.
+ `dynamodb:DescribeReservedCapacityOfferings` – Mengembalikan detail tentang paket kapasitas terpesan yang saat ini ditawarkan oleh AWS.
+ `dynamodb:PurchaseReservedCapacityOfferings` – Melakukan pembelian aktual kapasitas terpesan.

 Konsol Manajemen AWS Menggunakan tindakan API ini untuk menampilkan informasi kapasitas cadangan dan melakukan pembelian. Anda tidak dapat memanggil operasi ini dari program aplikasi karena hanya dapat diakses dari konsol. Namun, Anda dapat mengizinkan atau menolak akses ke operasi ini dalam kebijakan izin IAM.

Kebijakan berikut memungkinkan pengguna untuk melihat pembelian dan penawaran kapasitas cadangan dengan menggunakan Konsol Manajemen AWS — tetapi pembelian baru ditolak.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReservedCapacityDescriptions",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:DescribeReservedCapacityOfferings"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        },
        {
            "Sid": "DenyReservedCapacityPurchases",
            "Effect": "Deny",
            "Action": "dynamodb:PurchaseReservedCapacityOfferings",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        }
    ]
}
```

------

Perhatikan bahwa kebijakan ini menggunakan karakter wildcard (\$1) untuk mengizinkan penjelasan izin untuk semua, dan untuk menolak pembelian kapasitas tersimpan DynamoDB untuk semua.

# Kebijakan IAM untuk memberikan akses baca hanya untuk DynamoDB stream (bukan untuk tabel)
<a name="iam-policy-read-stream-only"></a>

Saat Anda mengaktifkan DynamoDB Streams pada tabel, informasi diambil tentang setiap modifikasi pada item dalam tabel. Untuk informasi selengkapnya, lihat [Tangkapan data perubahan DynamoDB Streams](Streams.md).

Dalam beberapa kasus, Anda mungkin ingin mencegah aplikasi membaca data dari tabel DynamoDB, tetapi tetap mengizinkan akses ke aliran tabel tersebut. Misalnya, Anda dapat mengonfigurasi AWS Lambda untuk melakukan polling aliran dan menjalankan fungsi Lambda saat pembaruan item terdeteksi, lalu melakukan pemrosesan tambahan.

Tindakan berikut tersedia untuk mengontrol akses ke DynamoDB stream:
+ `dynamodb:DescribeStream`
+ `dynamodb:GetRecords`
+ `dynamodb:GetShardIterator`
+ `dynamodb:ListStreams`

Contoh kebijakan berikut memberikan izin pengguna untuk mengakses aliran tabel bernama `GameScores`. Karakter wildcard (\$1) di ARN cocok dengan aliran yang terkait dengan tabel tersebut.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessGameScoresStreamOnly",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/stream/*"
        }
    ]
}
```

------

Perhatikan bahwa kebijakan ini memberikan akses ke aliran tabel `GameScores`, tetapi tidak ke tabel itu sendiri.

# Kebijakan IAM untuk mengizinkan AWS Lambda fungsi mengakses catatan aliran DynamoDB
<a name="iam-policy-example-lamda-process-dynamodb-streams"></a>

Jika Anda ingin tindakan tertentu dilakukan berdasarkan peristiwa dalam aliran DynamoDB, Anda dapat menulis fungsi AWS Lambda yang dipicu oleh peristiwa ini. Suatu fungsi Lambda seperti ini memerlukan izin untuk membaca data dari aliran DynamoDB. Untuk informasi selengkapnya tentang menggunakan Lambda dengan DynamoDB Streams, lihat [DynamoDB Streams dan pemicu AWS Lambda](Streams.Lambda.md).

Untuk memberikan izin kepada Lambda, gunakan kebijakan izin yang terkait dengan peran IAM fungsi Lambda (juga dikenal sebagai peran eksekusi). Tentukan kebijakan ini saat Anda membuat fungsi Lambda.

Misalnya, Anda dapat mengaitkan kebijakan izin berikut dengan peran eksekusi untuk memberikan izin Lambda untuk melakukan tindakan DynamoDB Streams terdaftar.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "APIAccessForDynamoDBStreams",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/stream/*"
        }
    ]
}
```

------

Untuk informasi selengkapnya, lihat [izin AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html) dalam *Panduan Pengembang AWS Lambda *.

# Kebijakan IAM untuk akses baca dan tulis ke klaster DynamoDB Accelerator (DAX)
<a name="iam-policy-example-read-write-dax-access"></a>

Kebijakan berikut mengizinkan akses baca, tulis, pembaruan, dan hapus ke klaster DynamoDB Accelerator (DAX), tetapi tidak untuk tabel DynamoDB terkait. Untuk menggunakan kebijakan ini, ganti nama AWS Wilayah, ID akun, dan nama klaster DAX Anda.

**catatan**  
Kebijakan ini memberikan akses ke klaster DAX, tetapi tidak ke tabel DynamoDB yang terkait. Pastikan bahwa klaster DAX Anda memiliki kebijakan yang benar untuk melakukan operasi yang sama ini pada tabel DynamoDB atas nama Anda. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AmazonDynamoDBDAXDataOperations",
            "Effect": "Allow",
            "Action": [
                "dax:GetItem",
                "dax:PutItem",
                "dax:ConditionCheckItem",
                "dax:BatchGetItem",
                "dax:BatchWriteItem",
                "dax:DeleteItem",
                "dax:Query",
                "dax:UpdateItem",
                "dax:Scan"
            ],
            "Resource": "arn:aws:dax:eu-west-1:123456789012:cache/MyDAXCluster"
        }
    ]
}
```

------

Untuk memperluas kebijakan ini guna mencakup akses DAX untuk semua AWS Wilayah untuk akun, gunakan karakter wildcard (\$1) untuk nama Wilayah.

```
"Resource": "arn:aws:dax:*:123456789012:cache/MyDAXCluster"
```







# Pemecahan masalah identitas dan akses Amazon DynamoDB
<a name="security_iam_troubleshoot"></a>

Gunakan informasi berikut untuk membantu Anda mendiagnosis dan memperbaiki masalah umum yang mungkin Anda hadapi ketika bekerja dengan DynamoDB dan IAM.

**Topics**
+ [Saya tidak berwenang melakukan tindakan di DynamoDB](#security_iam_troubleshoot-no-permissions)
+ [Saya tidak berwenang untuk melakukan iam: PassRole](#security_iam_troubleshoot-passrole)
+ [Saya ingin mengizinkan orang di luar saya Akun AWS untuk mengakses sumber daya DynamoDB saya](#security_iam_troubleshoot-cross-account-access)

## Saya tidak berwenang melakukan tindakan di DynamoDB
<a name="security_iam_troubleshoot-no-permissions"></a>

Jika Konsol Manajemen AWS memberitahu Anda bahwa Anda tidak berwenang untuk melakukan tindakan, maka Anda harus menghubungi administrator Anda untuk bantuan. Administrator Anda adalah orang yang memberikan nama pengguna dan kata sandi Anda.

Contoh kesalahan berikut terjadi ketika pengguna `mateojackson` mencoba menggunakan konsol untuk melihat detail tentang suatu sumber daya `my-example-widget` fiktif, tetapi tidak memiliki izin `aws:GetWidget` fiktif.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: aws:GetWidget on resource: my-example-widget
```

Dalam hal ini, Mateo meminta administratornya untuk memperbarui kebijakannya untuk mengizinkan dia mengakses sumber daya `my-example-widget` menggunakan tindakan `aws:GetWidget`.

## Saya tidak berwenang untuk melakukan iam: PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Jika Anda menerima kesalahan yang menyatakan bahwa Anda tidak berwenang untuk melakukan tindakan `iam:PassRole`, kebijakan Anda harus diperbarui agar Anda dapat meneruskan peran ke DynamoDB.

Beberapa Layanan AWS memungkinkan Anda untuk meneruskan peran yang ada ke layanan tersebut alih-alih membuat peran layanan baru atau peran terkait layanan. Untuk melakukannya, Anda harus memiliki izin untuk meneruskan peran ke layanan.

Contoh galat berikut terjadi ketika pengguna IAM bernama `marymajor` mencoba menggunakan konsol tersebut untuk melakukan tindakan di DynamoDB. Namun, tindakan tersebut memerlukan layanan untuk mendapatkan izin yang diberikan oleh peran layanan. Mary tidak memiliki izin untuk meneruskan peran tersebut pada layanan.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

Dalam kasus ini, kebijakan Mary harus diperbarui agar dia mendapatkan izin untuk melakukan tindakan `iam:PassRole` tersebut.

Jika Anda memerlukan bantuan, hubungi AWS administrator Anda. Administrator Anda adalah orang yang memberi Anda kredensial masuk.

## Saya ingin mengizinkan orang di luar saya Akun AWS untuk mengakses sumber daya DynamoDB saya
<a name="security_iam_troubleshoot-cross-account-access"></a>

Anda dapat membuat peran yang dapat digunakan pengguna di akun lain atau orang-orang di luar organisasi Anda untuk mengakses sumber daya Anda. Anda dapat menentukan siapa saja yang dipercaya untuk mengambil peran tersebut. Untuk layanan yang mendukung kebijakan berbasis sumber daya atau daftar kontrol akses (ACLs), Anda dapat menggunakan kebijakan tersebut untuk memberi orang akses ke sumber daya Anda.

Untuk mempelajari selengkapnya, periksa referensi berikut:
+ Untuk mempelajari apakah DynamoDB mendukung fitur-fitur ini, lihat [Cara kerja Amazon DynamoDB dengan IAM](security_iam_service-with-iam.md).
+ Untuk mempelajari cara menyediakan akses ke sumber daya Anda di seluruh sumber daya Akun AWS yang Anda miliki, lihat [Menyediakan akses ke pengguna IAM di pengguna lain Akun AWS yang Anda miliki](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) di *Panduan Pengguna IAM*.
+ Untuk mempelajari cara menyediakan akses ke sumber daya Anda kepada pihak ketiga Akun AWS, lihat [Menyediakan akses yang Akun AWS dimiliki oleh pihak ketiga](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) dalam *Panduan Pengguna IAM*.
+ Untuk mempelajari cara memberikan akses melalui federasi identitas, lihat [Menyediakan akses ke pengguna terautentikasi eksternal (federasi identitas)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) dalam *Panduan Pengguna IAM*.
+ *Untuk mempelajari perbedaan antara menggunakan peran dan kebijakan berbasis sumber daya untuk akses lintas akun, lihat [Akses sumber daya lintas akun di IAM di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html).*

# Kebijakan IAM untuk mencegah pembelian kapasitas terpesan DynamoDB
<a name="iam-policy-prevent-purchase-reserved-capacity"></a>

Dengan kapasitas terpesan Amazon DynamoDB, Anda membayar biaya satu kali di muka dan berkomitmen untuk membayar tingkat penggunaan minimum dengan penghematan yang signifikan selama jangka waktu tertentu. Anda dapat menggunakan Konsol Manajemen AWS untuk melihat dan membeli kapasitas cadangan. Namun, Anda mungkin tidak ingin semua pengguna di organisasi Anda dapat membeli kapasitas terpesan. Untuk informasi selengkapnya tentang kapasitas terpesan, lihat [harga Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing).

DynamoDB menyediakan operasi API berikut untuk mengendalikan akses ke manajemen kapasitas terpesan:
+ `dynamodb:DescribeReservedCapacity` – Mengembalikan pembelian kapasitas terpesan yang saat ini berlaku.
+ `dynamodb:DescribeReservedCapacityOfferings` – Mengembalikan detail tentang paket kapasitas terpesan yang saat ini ditawarkan oleh AWS.
+ `dynamodb:PurchaseReservedCapacityOfferings` – Melakukan pembelian aktual kapasitas terpesan.

 Konsol Manajemen AWS Menggunakan tindakan API ini untuk menampilkan informasi kapasitas cadangan dan melakukan pembelian. Anda tidak dapat memanggil operasi ini dari program aplikasi karena hanya dapat diakses dari konsol. Namun, Anda dapat mengizinkan atau menolak akses ke operasi ini dalam kebijakan izin IAM.

Kebijakan berikut memungkinkan pengguna untuk melihat pembelian dan penawaran kapasitas cadangan dengan menggunakan Konsol Manajemen AWS — tetapi pembelian baru ditolak.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReservedCapacityDescriptions",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:DescribeReservedCapacityOfferings"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        },
        {
            "Sid": "DenyReservedCapacityPurchases",
            "Effect": "Deny",
            "Action": "dynamodb:PurchaseReservedCapacityOfferings",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        }
    ]
}
```

------

Perhatikan bahwa kebijakan ini menggunakan karakter wildcard (\$1) untuk mengizinkan penjelasan izin untuk semua, dan untuk menolak pembelian kapasitas terpesan DynamoDB untuk semua.

# Menggunakan ketentuan kebijakan IAM untuk kontrol akses terperinci
<a name="specifying-conditions"></a>

Ketika memberikan izin di DynamoDB, Anda dapat menetapkan syarat yang menentukan bagaimana kebijakan izin berlaku. 

## Ikhtisar
<a name="FGAC_DDB.Overview"></a>

Di DynamoDB, Anda memiliki pilihan untuk menentukan syarat saat memberikan izin menggunakan kebijakan IAM (lihat [Manajemen Identitas dan Akses untuk Amazon DynamoDB](security-iam.md)). Sebagai contoh, Anda dapat:
+ Memberi izin kepada pengguna akan akses hanya-baca pada item dan atribut tertentu dalam tabel atau indeks sekunder.
+ Memberi izin kepada pengguna akan akses hanya-tulis pada atribut tertentu dalam tabel, berdasarkan identitas pengguna tersebut.

Di DynamoDB, Anda dapat menentukan ketentuan dalam kebijakan IAM menggunakan kunci ketentuan, seperti yang diilustrasikan dalam kasus penggunaan di bagian berikut.

### Kasus penggunaan izin
<a name="FGAC_DDB.OverviewUseCase"></a>

Selain mengontrol akses ke tindakan DynamoDB API, Anda juga dapat mengontrol akses ke item data dan atribut individual. Misalnya, Anda dapat melakukan hal berikut:
+ Memberikan izin pada tabel, namun batasi akses ke item tertentu dalam tabel tersebut berdasarkan nilai kunci primer tertentu. Misalnya aplikasi jejaring sosial untuk permainan, yang mana semua data permainan yang disimpan pengguna disimpan dalam satu tabel, tetapi tidak ada pengguna yang dapat mengakses item data yang bukan miliknya, seperti yang diperlihatkan dalam ilustrasi berikut:  
![\[Kasus penggunaan yang memberikan akses tingkat tabel ke pengguna tetapi membatasi akses ke item data tertentu.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/info-hiding-horizontal.png)
+ Menyembunyikan informasi sehingga hanya subset dari atribut yang terlihat oleh pengguna. Misalnya aplikasi yang menampilkan data penerbangan untuk bandara terdekat, berdasarkan lokasi pengguna. Nama maskapai penerbangan, waktu kedatangan dan keberangkatan, serta nomor penerbangan semuanya ditampilkan. Namun atribut seperti nama pilot atau jumlah penumpang disembunyikan, seperti terlihat pada ilustrasi berikut:   
![\[Kasus penggunaan yang hanya menampilkan sebagian data kepada pengguna, tetapi menyembunyikan atribut tertentu dari data.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/info-hiding-vertical.png)

Untuk menerapkan kontrol akses terperinci semacam ini, Anda menulis kebijakan izin IAM yang menentukan kondisi untuk mengakses kredensial keamanan dan izin terkait. Anda kemudian menerapkan kebijakan tersebut kepada pengguna, grup, atau peran yang Anda buat menggunakan konsol IAM. Kebijakan IAM Anda dapat membatasi akses ke masing-masing item dalam tabel, akses ke atribut dalam item tersebut, atau keduanya secara bersamaan.

Anda juga dapat menggunakan federasi identitas web untuk mengontrol akses oleh pengguna yang diautentikasi dengan Login dengan Amazon, Facebook, atau Google. Untuk informasi selengkapnya, lihat [Menggunakan federasi identitas web](WIF.md).

Anda menggunakan elemen `Condition` IAM untuk menerapkan kebijakan kontrol akses yang terperinci. Dengan menambahkan elemen `Condition` ke kebijakan izin, Anda dapat mengizinkan atau menolak akses ke item dan atribut dalam tabel dan indeks DynamoDB, berdasarkan kebutuhan bisnis khusus Anda. 

Video di bawah ini menjelaskan kontrol akses berbutir halus di DynamoDB menggunakan kondisi kebijakan IAM.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/LbEmo_yulb0?si=VTSlNHVocAEYwhJi/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/LbEmo_yulb0?si=VTSlNHVocAEYwhJi)


## Memahami Kontrol Akses Berbutir Halus di DynamoDB
<a name="FGAC_DDB.UnderstandingFineGrainedAccess"></a>

Kontrol akses berbutir halus di DynamoDB memungkinkan Anda membuat batas izin yang tepat di berbagai tingkatan:

1. **Kontrol akses tingkat item:** Batasi pengguna untuk hanya mengakses item yang berisi nilai kunci tertentu, biasanya cocok dengan identitas atau cakupan izin mereka.

1. **Kontrol akses tingkat atribut:** Batasi atribut (kolom) mana yang dapat dilihat atau dimodifikasi pengguna, memungkinkan Anda untuk melindungi informasi sensitif sambil mengizinkan akses ke data yang tidak sensitif dalam item yang sama.

1. **Kontrol khusus operasi:** Menerapkan aturan izin yang berbeda berdasarkan jenis operasi yang dilakukan.

Kontrol ini diimplementasikan melalui kebijakan IAM menggunakan kunci kondisi khusus DynamoDB.

## Menentukan ketentuan: Menggunakan kunci syarat
<a name="FGAC_DDB.ConditionKeys"></a>

AWS menyediakan satu set kunci kondisi yang telah ditentukan (AWS-wide condition keys) untuk semua AWS layanan yang mendukung IAM untuk kontrol akses. Misalnya, Anda dapat menggunakan kunci kondisi `aws:SourceIp` untuk memeriksa alamat IP pemohon sebelum mengizinkan tindakan yang akan dilakukan. Untuk informasi selengkapnya dan daftar tombol AWS-wide, lihat [Kunci Tersedia untuk Ketentuan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) di Panduan Pengguna IAM.

Berikut ini adalah kunci kondisi khusus layanan DynamoDB yang berlaku untuk DynamoDB.

**`dynamodb:LeadingKeys`**  
Mewakili atribut kunci pertama dari tabel—dengan kata lain, kunci partisi. Nama kunci `LeadingKeys` bersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item. Selain itu, Anda harus menggunakan pengubah `ForAllValues` ketika menggunakan `LeadingKeys` dalam suatu kondisi.

**`dynamodb:Select`**  
Mewakili parameter `Select` dari suatu permintaan. `Select` dapat berupa nilai berikut:  
+ `ALL_ATTRIBUTES`
+ `ALL_PROJECTED_ATTRIBUTES`
+ `SPECIFIC_ATTRIBUTES`
+ `COUNT`
Meskipun sering dikaitkan dengan operasi Query dan Scan, kunci kondisi ini berlaku untuk semua operasi DynamoDB yang mengembalikan atribut item dan sangat penting untuk mengontrol akses atribut di semua tindakan API. Menggunakan StringEqualsIfExists atau batasan serupa pada kunci kondisi ini akan menerapkan batasan pada operasi di mana kunci kondisi ini berlaku, sambil mengabaikannya pada operasi yang tidak berlaku.

**`dynamodb:Attributes`**  
Merupakan daftar atribut *tingkat atas* yang diakses oleh permintaan. Atribut tingkat atas diakses oleh permintaan jika, atau atribut bersarang apa pun yang dikandungnya, ditentukan dalam parameter permintaan. Misalnya, `GetItem` permintaan yang menentukan `ProjectionExpression` dari`"Name, Address.City"`, `dynamodb:Attributes` daftar akan mencakup “Nama” dan “Alamat”. Jika `Attributes` parameter disebutkan dalam kebijakan kontrol akses berbutir halus, pertimbangkan juga pembatasan `ReturnValues` dan `Select` parameter untuk memastikan akses terbatas ke atribut tertentu di beberapa tindakan API seperti,, dan. `GetItem` `Query` `Scan`   
Kondisi ini dievaluasi hanya pada atribut yang ditentukan dalam permintaan (seperti dalam a ProjectionExpression), bukan pada atribut dalam respons. Jika no ProjectionExpression disediakan dalam permintaan, semua atribut akan dikembalikan terlepas dari batasan atribut apa pun dalam kebijakan. Lihat bagian “Memastikan pembatasan berbasis atribut diberlakukan” di bawah ini untuk detail tentang cara mengamankan akses atribut dengan benar.

**`dynamodb:ReturnValues`**  
Merupakan `ReturnValues` parameter permintaan. Bergantung pada tindakan API, `ReturnValues` bisa berupa salah satu dari nilai berikut:   
+ `ALL_OLD`
+ `UPDATED_OLD`
+ `ALL_NEW`
+ `UPDATED_NEW`
+ `NONE`

**`dynamodb:ReturnConsumedCapacity`**  
Mewakili parameter `ReturnConsumedCapacity` dari suatu permintaan. `ReturnConsumedCapacity` dapat berupa salah satu nilai berikut:  
+ `TOTAL`
+ `NONE`

**`dynamodb:FirstPartitionKeyValues`**  
Merupakan atribut kunci pertama dari sebuah tabel—dengan kata lain, kunci partisi pertama. Nama kunci `FirstPartitionKeyValues` bersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item. Selain itu, Anda harus menggunakan `ForAllValues` pengubah saat menggunakan `FirstPartitionKeyValues` dalam suatu kondisi. `FirstPartitionKeyValues`dan `LeadingKeys` dapat digunakan dapat ditukar.

**`dynamodb:SecondPartitionKeyValues`**  
Mirip dengan`dynamodb:FirstPartitionKeyValues`. Merupakan kunci partisi kedua sumber daya. Nama kunci `SecondPartitionKeyValues` bersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item.

**`dynamodb:ThirdPartitionKeyValues`**  
Mirip dengan`dynamodb:FirstPartitionKeyValues`. Merupakan kunci partisi ketiga sumber daya. Nama kunci `ThirdPartitionKeyValues` bersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item.

**`dynamodb:FourthPartitionKeyValues`**  
Mirip dengan`dynamodb:FirstPartitionKeyValues`. Merupakan kunci partisi keempat sumber daya. Nama kunci `FourthPartitionKeyValues` bersifat jamak, meskipun kuncinya digunakan dengan tindakan satu item.

### Memastikan pembatasan berbasis atribut diberlakukan
<a name="FGAC_DDB.EnsuringAttributeRestrictions"></a>

Saat menggunakan kondisi berbasis atribut untuk membatasi akses ke atribut tertentu, penting untuk memahami bagaimana kondisi ini dievaluasi:
+ **Kondisi atribut dievaluasi hanya pada atribut yang ditentukan dalam permintaan**, bukan pada atribut dalam respons.
+ **Untuk operasi baca tanpa ProjectionExpression** (GetItem, Kueri, Pemindaian, dll.), Semua atribut akan dikembalikan terlepas dari batasan atribut dalam kebijakan Anda. Untuk mencegah potensi paparan data sensitif ini, menerapkan kedua kondisi atribut (`dynamodb:Attributes`) dan kondisi yang memerlukan atribut tertentu harus diminta (`dynamodb:Select`).
+ **Untuk operasi tulis** (PutItem, UpdateItem, DeleteItem), ReturnValues parameter dapat mengembalikan item lengkap, berpotensi mengekspos atribut terbatas bahkan ketika operasi tulis itu sendiri mematuhi kebijakan Anda. Untuk mencegah eksposur ini, terapkan kondisi atribut (`dynamodb:Attributes`) dan pembatasan pada ReturnValues (`dynamodb:ReturnValues`) dalam kebijakan Anda.

### Membatasi akses pengguna
<a name="FGAC_DDB.LimitingAccess"></a>

Banyak kebijakan izin IAM memungkinkan pengguna mengakses hanya item dalam tabel yang nilai kunci partisinya cocok dengan pengidentifikasi pengguna. Misalnya, aplikasi game sebelumnya membatasi akses dengan cara ini sehingga pengguna hanya dapat mengakses data game yang dikaitkan dengan ID pengguna mereka. Variabel substitusi IAM `${www.amazon.com:user_id}`, `${graph.facebook.com:id}`, dan `${accounts.google.com:sub}` berisi pengenal pengguna untuk Login with Amazon, Facebook, dan Google. Untuk mempelajari cara aplikasi masuk ke salah satu penyedia identitas ini dan memperoleh pengidentifikasi ini, lihat [Menggunakan federasi identitas web](WIF.md).

**penting**  
Kontrol akses berbutir halus tidak didukung untuk membatasi replikasi tabel global. Menerapkan kondisi kebijakan untuk kontrol akses berbutir halus ke [prinsipal layanan DynamoDB atau peran terkait layanan yang digunakan untuk replikasi tabel](globaltables-security.md) global dapat mengganggu replikasi dalam tabel global. 

**catatan**  
Masing-masing contoh pada bagian berikut menetapkan klausul `Effect` untuk `Allow` dan menentukan hanya tindakan, sumber daya, dan parameter yang diizinkan. Akses hanya diizinkan untuk apa yang tercantum secara eksplisit dalam kebijakan IAM.  
Dalam beberapa kasus, dimungkinkan untuk menulis ulang kebijakan ini sehingga kebijakan berbasis penolakan (yaitu, pengaturan klausul `Effect` untuk `Deny` dan membalikkan semua logika dalam kebijakan). Namun, kami menyarankan agar Anda menghindari penggunaan kebijakan berbasis penolakan dengan DynamoDB karena kebijakan tersebut sulit ditulis dengan benar, dibandingkan dengan kebijakan berbasis izin. Selain itu, perubahan di masa mendatang pada DynamoDB API (atau perubahan input API yang ada) dapat membuat kebijakan berbasis penolakan tidak efektif.

### Kebijakan Contoh: Menggunakan ketentuan untuk kontrol parameter terperinci
<a name="FGAC_DDB.Examples"></a>

Bagian ini menunjukkan beberapa kebijakan untuk mengimplementasikan kontrol akses terperinci pada tabel dan indeks DynamoDB.

**catatan**  
Semua contoh menggunakan Wilayah us-west-2 dan berisi akun fiktif. IDs

#### Contoh 1 Kontrol akses berbasis kunci partisi dasar dengan batasan atribut
<a name="FGAC_DDB.Examples.BasicPartitionKeyAccess"></a>

Sebagai contoh, pertimbangkan aplikasi game seluler yang memungkinkan pemain memilih dan memainkan berbagai permainan berbeda. Aplikasi ini menggunakan tabel DynamoDB `GameScores` bernama untuk melacak skor tinggi dan data pengguna lainnya. Setiap item dalam tabel diidentifikasi secara unik berdasarkan ID pengguna dan nama permainan yang dimainkan pengguna. Tabel `GameScores` memiliki kunci primer yang terdiri dari kunci partisi (`UserId`) dan kunci urutan (`GameTitle`). Pengguna hanya memiliki akses ke data game yang terkait dengan ID pengguna mereka. Pengguna yang ingin memainkan game harus memiliki peran IAM bernama `GameRole`, yang memiliki kebijakan keamanan yang melekat padanya.

Untuk mengelola izin pengguna di aplikasi ini, Anda dapat menulis kebijakan izin seperti berikut:

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

Selain memberikan izin untuk tindakan DynamoDB tertentu (elemen `Action`) pada tabel `GameScores` (elemen `Resource`), elemen `Condition` menggunakan kunci kondisi khusus untuk DynamoDB berikut yang membatasi izin sebagai berikut:
+ `dynamodb:LeadingKeys` – Kunci ketentuan ini memungkinkan pengguna untuk mengakses hanya item yang nilai kunci partisinya cocok dengan ID pengguna mereka. ID ini, `${www.amazon.com:user_id}`, adalah variabel substitusi. Untuk informasi selengkapnya tentang variabel substitusi, lihat [Menggunakan federasi identitas web](WIF.md).
+ `dynamodb:Attributes` – Kunci ketentuan ini membatasi akses ke atribut tertentu sehingga hanya tindakan yang tercantum dalam kebijakan izin yang dapat mengembalikan nilai untuk atribut ini. Selain itu, klausul `StringEqualsIfExists` memastikan bahwa aplikasi harus selalu menyediakan daftar atribut tertentu untuk ditindaklanjuti dan aplikasi tidak dapat meminta semua atribut.

Ketika kebijakan IAM dievaluasi, hasilnya selalu true (akses diizinkan) atau false (akses ditolak). Jika ada bagian dari elemen `Condition` yang false, seluruh kebijakan mengevaluasi ke false dan akses ditolak.

**penting**  
Jika Anda menggunakan `dynamodb:Attributes`, Anda harus menentukan nama semua atribut kunci primer dan kunci indeks untuk tabel dan indeks sekunder apa pun yang tercantum dalam kebijakan. Jika tidak, DynamoDB tidak dapat menggunakan atribut kunci ini untuk melakukan tindakan yang diminta.

Dokumen kebijakan IAM hanya dapat berisi karakter Unicode berikut: tab horizontal (U\$10009), umpan baris (U\$1000A), pengembalian pengangkutan (U\$1000D), dan karakter dalam rentang U\$10020 hingga U\$100FF.

#### Contoh 2: Berikan izin yang membatasi akses ke item dengan nilai kunci partisi tertentu
<a name="FGAC_DDB.Examples.PartitionKeyValue"></a>

Kebijakan izin berikut memberikan izin yang memungkinkan seperangkat tindakan DynamoDB pada tabel `GamesScore`. Kebijakan tersebut menggunakan kunci ketentuan `dynamodb:LeadingKeys` untuk membatasi tindakan pengguna hanya pada item yang nilai kunci partisi `UserID`-nya cocok dengan ID pengguna unik Login with Amazon untuk aplikasi ini.

**penting**  
Daftar tindakan tidak termasuk izin untuk `Scan` karena `Scan` mengembalikan semua item apa pun kunci awalnya.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"FullAccessToUserItems",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ]
            }
         }
      }
   ]
}
```

------

**catatan**  
Saat menggunakan variabel kebijakan, Anda harus secara eksplisit menentukan versi 2012-10-17 dalam kebijakan. Versi bawaan bahasa kebijakan akses, yakni 2008-10-17, tidak mendukung variabel kebijakan ini.

Untuk menerapkan akses hanya baca, Anda dapat menghapus tindakan apa pun yang dapat mengubah data. Dalam kebijakan berikut, hanya tindakan yang menyediakan akses baca saja yang disertakan dalam ketentuan.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"ReadOnlyAccessToUserItems",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ]
            }
         }
      }
   ]
}
```

------

**penting**  
Jika Anda menggunakan `dynamodb:Attributes`, Anda harus menentukan nama semua atribut kunci primer dan kunci indeks, untuk tabel dan indeks sekunder apa pun yang tercantum dalam kebijakan. Jika tidak, DynamoDB tidak dapat menggunakan atribut kunci ini untuk melakukan tindakan yang diminta.

#### Contoh 3: Berikan izin yang membatasi akses ke atribut tertentu dalam tabel
<a name="FGAC_DDB.Examples.SpecificAttributes"></a>

Kebijakan izin berikut mengizinkan akses ke hanya dua atribut tertentu dalam tabel dengan menambahkan kunci ketentuan `dynamodb:Attributes`. Atribut ini dapat dibaca, ditulis, atau dievaluasi dalam penulisan bersyarat atau filter pemindaian.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"LimitAccessToSpecificAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:BatchGetItem",
            "dynamodb:Scan"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:Attributes":[
                  "UserId",
                  "TopScore"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

**catatan**  
Kebijakan ini mengambil pendekatan daftar izin, yang mengizinkan akses ke set atribut bernama. Anda dapat menulis kebijakan serupa yang menolak akses ke atribut lain. Kami tidak merekomendasikan pendekatan daftar penolakan ini. Pengguna dapat menentukan nama-nama atribut yang ditolak ini dengan mengikuti prinsip hak istimewa terkecil, seperti yang dijelaskan di Wikipedia di http://en.wikipedia. org/wiki/Principle\$1of\$1least\$1privilege, dan gunakan pendekatan daftar izinkan untuk menghitung semua nilai yang diizinkan, daripada menentukan atribut yang ditolak.

Kebijakan ini tidak mengizinkan `PutItem`, `DeleteItem`, atau `BatchWriteItem`. Tindakan ini selalu menggantikan seluruh item sebelumnya, yang memungkinkan pengguna menghapus nilai sebelumnya untuk atribut yang tidak boleh mereka akses.

Klausa `StringEqualsIfExists` dalam kebijakan izin memastikan hal berikut:
+ Jika pengguna menentukan parameter `Select`, nilainya harus `SPECIFIC_ATTRIBUTES`. Persyaratan ini mencegah tindakan API mengembalikan atribut apa pun yang tidak diizinkan, seperti dari proyeksi indeks.
+ Jika pengguna menentukan parameter `ReturnValues`, nilainya harus `NONE`, `UPDATED_OLD`, atau `UPDATED_NEW`. Hal ini diperlukan karena tindakan `UpdateItem` tersebut juga melakukan operasi baca implisit untuk memeriksa apakah suatu item ada sebelum menggantinya, dan agar nilai atribut sebelumnya dapat dikembalikan jika diminta. Membatasi `ReturnValues` dengan cara ini memastikan bahwa pengguna hanya dapat membaca atau menulis atribut yang diizinkan.
+ Klausa `StringEqualsIfExists` memastikan bahwa hanya satu dari parameter ini — `Select` atau `ReturnValues` — yang dapat digunakan per permintaan, dalam konteks tindakan yang diizinkan.

Berikut ini adalah beberapa variasi pada kebijakan ini:
+ Untuk hanya mengizinkan tindakan baca, Anda dapat menghapus `UpdateItem` dari daftar tindakan yang diizinkan. Karena tidak ada tindakan yang tersisa menerima `ReturnValues`, Anda dapat menghapus `ReturnValues` dari kondisi. Anda juga dapat mengubah `StringEqualsIfExists` menjadi `StringEquals` karena parameter `Select` selalu memiliki nilai (`ALL_ATTRIBUTES`, kecuali ditentukan lain).
+ Untuk hanya mengizinkan tindakan tulis, Anda dapat menghapus semuanya kecuali `UpdateItem` dari daftar tindakan yang diizinkan. Karena `UpdateItem` tidak menggunakan parameter `Select`, Anda dapat menghapus `Select` dari kondisi. Anda juga harus mengubah `StringEqualsIfExists` menjadi `StringEquals` karena parameter `ReturnValues` selalu memiliki nilai (`NONE`, kecuali ditentukan lain).
+ Untuk mengizinkan semua atribut yang namanya cocok dengan pola, gunakan `StringLike`, bukan `StringEquals`, dan gunakan pola multi-karakter yang cocok dengan karakter wildcard (\$1).

#### Contoh 4: Berikan izin untuk mencegah pembaruan pada atribut tertentu
<a name="FGAC_DDB.Examples.PreventUpdates"></a>

Kebijakan izin berikut membatasi akses pengguna untuk memperbarui hanya atribut tertentu yang diidentifikasi oleh kunci kondisi `dynamodb:Attributes`. Kondisi `StringNotLike` mencegah aplikasi memperbarui atribut yang ditentukan menggunakan kunci kondisi `dynamodb:Attributes`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"PreventUpdatesOnCertainAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/GameScores",
         "Condition":{
            "ForAllValues:StringNotLike":{
               "dynamodb:Attributes":[
                  "FreeGamesAvailable",
                  "BossLevelUnlocked"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

Perhatikan hal-hal berikut:
+ Tindakan `UpdateItem`, seperti tindakan tulis lainnya, memerlukan akses baca ke item sehingga dapat mengembalikan nilai sebelum dan sesudah pembaruan. Dalam kebijakan tersebut, Anda membatasi tindakan untuk mengakses hanya atribut yang diizinkan yang akan diperbarui dengan menentukan kunci ketentuan `dynamodb:ReturnValues`. Kunci kondisi membatasi `ReturnValues` dalam permintaan untuk menentukan hanya `NONE`, `UPDATED_OLD`, atau `UPDATED_NEW` dan tidak mencakup `ALL_OLD` atau `ALL_NEW`.
+ `StringEqualsIfExists`Operator memastikan bahwa jika `dynamodb:Select` atau `dynamodb:ReturnValues` ada dalam permintaan, itu harus cocok dengan nilai yang ditentukan. Ini mencegah operasi mengembalikan item lengkap.
+ Saat membatasi pembaruan atribut, Anda juga harus mengontrol data apa yang dapat dikembalikan untuk mencegah pengungkapan informasi atribut yang dilindungi.
+ Tindakan `PutItem` dan `DeleteItem` mengganti seluruh item, dengan demikian memungkinkan aplikasi memodifikasi atribut apa pun. Jadi ketika membatasi aplikasi untuk memperbarui hanya atribut tertentu, Anda tidak boleh memberikan izin untuk ini APIs.

#### Contoh 5: Berikan izin untuk menanyakan hanya atribut yang diproyeksikan dalam indeks
<a name="FGAC_DDB.Examples.QueryProjectedAttributes"></a>

Kebijakan izin berikut memungkinkan kueri pada indeks sekunder (`TopScoreDateTimeIndex`) dengan menggunakan kunci ketentuan `dynamodb:Attributes`. Kebijakan ini juga membatasi kueri untuk meminta atribut tertentu saja yang telah diproyeksikan ke dalam indeks.

Untuk mengharuskan aplikasi menentukan daftar atribut dalam kueri, kebijakan juga menentukan kunci ketentuan `dynamodb:Select` untuk mengharuskan parameter `Select` dari tindakan `Query` DynamoDB adalah `SPECIFIC_ATTRIBUTES`. Daftar atribut terbatas pada daftar tertentu yang disediakan menggunakan kunci ketentuan `dynamodb:Attributes`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"QueryOnlyProjectedIndexAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:Attributes":[
                  "TopScoreDateTime",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "Attempts"
               ]
            },
            "StringEquals":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

Kebijakan izin berikut ini serupa, tetapi kueri harus meminta semua atribut yang telah diproyeksikan ke dalam indeks.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"QueryAllIndexAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "StringEquals":{
               "dynamodb:Select":"ALL_PROJECTED_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

#### Contoh 6: Berikan izin untuk membatasi akses ke atribut tertentu dan nilai kunci partisi
<a name="FGAC_DDB.Examples.AttributesAndKeyValues"></a>

Kebijakan izin berikut memungkinkan tindakan DynamoDB tertentu (ditentukan dalam elemen `Action`) pada tabel dan indeks tabel (ditentukan dalam elemen `Resource`). Kebijakan menggunakan kunci `dynamodb:LeadingKeys` kondisi untuk membatasi izin hanya pada item yang nilai kunci partisi cocok dengan ID Facebook pengguna.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"LimitAccessToCertainAttributesAndKeyValues",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:BatchGetItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores",
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${graph.facebook.com:id}"
               ],
               "dynamodb:Attributes":[
                  "attribute-A",
                  "attribute-B"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

Perhatikan hal-hal berikut:
+ Tindakan tulis yang diizinkan oleh kebijakan (`UpdateItem`) hanya dapat mengubah atribut-A atau atribut-B.
+ Karena kebijakan mengizinkan `UpdateItem`, aplikasi dapat menyisipkan item baru, dan atribut yang tersembunyi akan null dalam item baru. Jika atribut ini diproyeksikan ke dalam `TopScoreDateTimeIndex`, kebijakan memiliki manfaat tambahan untuk mencegah kueri yang menyebabkan pengambilan dari tabel.
+ Aplikasi tidak dapat membaca atribut apa pun selain yang tercantum dalam `dynamodb:Attributes`. Dengan adanya kebijakan ini, aplikasi harus menetapkan parameter `Select` ke `SPECIFIC_ATTRIBUTES` dalam permintaan baca, dan hanya atribut dalam daftar izin yang dapat diminta. Untuk permintaan tulis, aplikasi tidak dapat mengatur `ReturnValues` ke `ALL_OLD` atau `ALL_NEW` dan tidak dapat melakukan operasi tulis bersyarat berdasarkan atribut lainnya.

#### Contoh 7: Tolak izin untuk membatasi akses ke atribut tertentu dalam tabel
<a name="FGAC_DDB.Examples.DenySpecificAttributes"></a>

Kebijakan berikut menolak akses ke atribut sensitif dan memastikan pembatasan ini tidak dapat dilewati dengan menghilangkan ekspresi proyeksi. Hal ini memungkinkan akses umum ke `CustomerData` tabel sementara secara eksplisit menolak akses ke `SSN` dan atribut. `CreditCardNumber`

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData"
      },
      {
         "Effect":"Deny",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData",
         "Condition":{
            "ForAnyValue:StringEquals":{
               "dynamodb:Attributes":[
                  "SSN",
                  "CreditCardNumber"
               ]
            }
         }
      },
      {
         "Effect":"Deny",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData",
         "Condition":{
            "StringNotEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

## Topik terkait
<a name="w2aac39c21c15c11"></a>
+  [Manajemen Identitas dan Akses untuk Amazon DynamoDB](security-iam.md) 
+ [Izin DynamoDB API: Referensi tindakan, sumber daya, dan kondisi](api-permissions-reference.md)

# Menggunakan federasi identitas web
<a name="WIF"></a>

Jika Anda menulis aplikasi yang ditargetkan untuk sejumlah besar pengguna, Anda dapat menggunakan *federasi identitas web* untuk autentikasi dan otorisasi. Federasi identitas web menghilangkan kebutuhan untuk membuat pengguna individual. Sebagai gantinya, pengguna dapat masuk ke penyedia identitas dan kemudian mendapatkan kredensil keamanan sementara dari AWS Security Token Service ()AWS STS. Aplikasi kemudian dapat menggunakan kredensil ini untuk mengakses AWS layanan.

Federasi identitas web mendukung penyedia identitas berikut:
+ Login with Amazon
+ Facebook
+ Google

## Sumber daya tambahan untuk federasi identitas web
<a name="WIF.AdditionalResources"></a>

Sumber daya berikut ini dapat membantu Anda mempelajari lebih jauh lagi tentang federasi identitas web:
+ Postingan [Web Identity Federation using the AWS SDK untuk .NET](https://aws.amazon.com/blogs/developer/web-identity-federation-using-the-aws-sdk-for-net) pada blog AWS Developer memberi panduan tentang cara menggunakan federasi identitas web dengan Facebook. Ini termasuk cuplikan kode di C \$1 yang menunjukkan bagaimana mengasumsikan peran IAM dengan identitas web dan cara menggunakan kredensil keamanan sementara untuk mengakses sumber daya. AWS 
+ [AWS Mobile SDK for iOS](https://aws.amazon.com/sdkforios/) dan [AWS Mobile SDK for Android](https://aws.amazon.com/sdkforandroid/) berisi aplikasi sampel. Aplikasi ini mencakup kode yang menunjukkan cara menginvokasi penyedia identitas, kemudian cara menggunakan informasi dari penyedia tersebut untuk mendapatkan dan menggunakan kredensial keamanan sementara.
+ Artikel [Federasi Identitas Web dengan Aplikasi Seluler](https://aws.amazon.com/articles/4617974389850313) membahas federasi identitas web dan menunjukkan contoh bagaimana menggunakan federasi identitas web untuk mengakses AWS sumber daya.

## Contoh kebijakan untuk federasi identitas web
<a name="WIF.Example"></a>

Untuk menunjukkan bagaimana Anda dapat menggunakan federasi identitas web dengan DynamoDB, kunjungi kembali tabel *GameScores*yang diperkenalkan di. [Menggunakan ketentuan kebijakan IAM untuk kontrol akses terperinci](specifying-conditions.md) Berikut adalah kunci utama untuk *GameScores*.


****  

| Nama Tabel | Jenis Kunci Primer | Nama dan Jenis Kunci Partisi | Nama dan Jenis Kunci Urutan | 
| --- | --- | --- | --- | 
| GameScores (UserId, GameTitle, ...) | Komposit | Nama Atribut: UserId Tipe: String | Nama Atribut: GameTitle Tipe: String | 

Sekarang anggaplah bahwa aplikasi game seluler menggunakan tabel ini, dan aplikasi perlu mendukung ribuan, atau bahkan jutaan, pengguna. Pada skala ini, menjadi sangat sulit untuk mengelola pengguna aplikasi individu, dan untuk menjamin bahwa setiap pengguna hanya dapat mengakses data mereka sendiri dalam *GameScores*tabel. Untungnya, banyak pengguna sudah memiliki akun dengan penyedia identitas pihak ketiga, seperti Facebook, Google, atau Login with Amazon. Jadi masuk akal untuk menggunakan salah satu penyedia ini untuk tugas autentikasi.

Untuk melakukannya menggunakan federasi identitas web, developer aplikasi harus mendaftarkan aplikasi dengan penyedia identitas (seperti Login with Amazon) dan memperoleh ID aplikasi unik. Selanjutnya, developer perlu membuat peran IAM. (Untuk contoh ini, peran ini diberi nama *GameRole*.) Peran harus memiliki dokumen kebijakan IAM yang dilampirkan padanya, menentukan kondisi di mana aplikasi dapat mengakses *GameScores*tabel.

Ketika ingin bermain game, pengguna masuk ke akun Login with Amazon mereka dari dalam aplikasi game. Aplikasi kemudian memanggil AWS Security Token Service (AWS STS), memberikan Login with Amazon app ID dan meminta keanggotaan *GameRole*. AWS STS mengembalikan AWS kredensi sementara ke aplikasi dan memungkinkannya mengakses *GameScores*tabel, tunduk pada dokumen *GameRole*kebijakan.

Diagram berikut menunjukkan bagaimana potongan-potongan ini cocok satu sama lain.

![\[Alur kerja aplikasi game. Aplikasi ini menggunakan ID Amazon dan AWS STS untuk mendapatkan kredensil sementara untuk mengakses tabel DynamoDB.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/wif-overview.png)


**Gambaran umum federasi identitas web**

1. Aplikasi memanggil penyedia identitas pihak ketiga untuk mengautentikasi pengguna dan aplikasi. Penyedia identitas mengembalikan token identitas web ke aplikasi.

1. Aplikasi memanggil AWS STS dan meneruskan token identitas web sebagai input. AWS STS mengotorisasi aplikasi dan memberinya kredensil AWS akses sementara. Aplikasi ini diizinkan untuk mengambil peran IAM (*GameRole*) dan mengakses AWS sumber daya sesuai dengan kebijakan keamanan peran.

1. Aplikasi memanggil DynamoDB untuk mengakses tabel. *GameScores* Karena telah diasumsikan *GameRole*, aplikasi tunduk pada kebijakan keamanan yang terkait dengan peran itu. Dokumen kebijakan mencegah aplikasi mengakses data yang bukan milik pengguna.

Sekali lagi, berikut adalah kebijakan keamanan untuk *GameRole*itu ditunjukkan di[Menggunakan ketentuan kebijakan IAM untuk kontrol akses terperinci](specifying-conditions.md):

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

`Condition`Klausa menentukan item mana *GameScores*yang terlihat oleh aplikasi. Hal ini dilakukan dengan membandingkan ID Login with Amazon untuk nilai kunci partisi `UserId` dalam `GameScores`. Hanya item milik pengguna saat ini yang dapat diproses menggunakan salah satu tindakan DynamoDB yang tercantum dalam kebijakan ini. Item lain dalam tabel tidak dapat diakses. Selain itu, hanya atribut tertentu yang tercantum dalam kebijakan yang dapat diakses.

# Mempersiapkan penggunaan federasi identitas web
<a name="WIF.PreparingForUse"></a>

Jika Anda adalah developer aplikasi dan ingin menggunakan federasi identitas web untuk aplikasi Anda, ikuti langkah-langkah berikut:

1. **Daftar sebagai developer dengan penyedia identitas pihak ketiga.** Tautan eksternal berikut memberikan informasi tentang mendaftar dengan penyedia identitas yang didukung:
   + [Login dengan Amazon Developer Center](http://login.amazon.com/)
   + [Pendaftaran](https://business.facebook.com/business/loginpage) di situs Facebook
   + [Menggunakan OAuth 2.0 untuk Mengakses Google APIs](https://developers.google.com/accounts/docs/OAuth2) di situs Google

1. **Daftarkan aplikasi Anda dengan penyedia identitas.** Saat Anda melakukannya, penyedia memberikan ID yang unik ke aplikasi Anda. Jika Anda ingin aplikasi bekerja dengan beberapa penyedia identitas, Anda perlu memperoleh ID aplikasi dari masing-masing penyedia.

1. **Buat satu atau beberapa peran IAM. **Anda memerlukan satu peran untuk setiap penyedia identitas untuk setiap aplikasi. Misalnya, Anda dapat membuat peran yang dapat diasumsikan oleh aplikasi saat pengguna masuk menggunakan Login with Amazon, peran kedua untuk aplikasi yang sama di mana pengguna masuk menggunakan Facebook, dan peran ketiga untuk aplikasi di mana pengguna masuk menggunakan Google.

   Sebagai bagian dari proses pembuatan peran, Anda harus melampirkan kebijakan IAM ke peran tersebut. Dokumen kebijakan Anda harus menentukan sumber daya DynamoDB yang diperlukan oleh aplikasi Anda, dan izin untuk mengakses sumber daya tersebut.

Untuk informasi selengkapnya, lihat [Tentang Federasi Identitas Web](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) dalam *Panduan Pengguna IAM*. 

**catatan**  
Sebagai alternatif AWS Security Token Service, Anda dapat menggunakan Amazon Cognito. Amazon Cognito adalah layanan pilihan untuk mengelola kredensial sementara untuk aplikasi seluler. Untuk informasi selengkapnya, lihat [Mendapatkan kredensial](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-credentials.html) dalam *Panduan Developer Amazon Cognito*. 

## Membuat kebijakan IAM menggunakan konsol DynamoDB
<a name="WIF.PreparingForUse.DDBConsole"></a>

Konsol DynamoDB dapat membantu Anda membuat kebijakan IAM untuk digunakan dengan federasi identitas web. Untuk melakukannya, Anda memilih tabel DynamoDB dan menentukan penyedia identitas, tindakan, serta atribut untuk disertakan dalam kebijakan. Konsol DynamoDB kemudian menghasilkan kebijakan yang dapat Anda lampirkan ke peran IAM.

1. Masuk ke Konsol Manajemen AWS dan buka konsol DynamoDB di. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1.  Di panel navigasi, pilih **Tabel**. 

1.  Dalam daftar tabel, pilih tabel yang ingin Anda buatkan kebijakan IAM. 

1.  Pilih tombol **Tindakan**, dan pilih **Buat Kebijakan Kontrol Akses**. 

1.  Pilih penyedia identitas, tindakan, dan atribut untuk kebijakan. 

    Jika pengaturan sudah sesuai keinginan Anda, pilih **Buat Kebijakan**. Kebijakan yang dihasilkan muncul. 

1.  Pilih **Lihat Dokumentasi**, lalu ikuti langkah-langkah yang diperlukan untuk melampirkan kebijakan yang dihasilkan ke peran IAM. 

# Menulis aplikasi Anda untuk menggunakan federasi identitas web
<a name="WIF.RunningYourApp"></a>

Untuk menggunakan federasi identitas web, aplikasi Anda harus mengasumsikan peran IAM yang Anda buat. Sejak saat itu, aplikasi menghormati kebijakan akses yang Anda lampirkan pada peran tersebut.

Saat runtime, jika aplikasi Anda menggunakan federasi identitas web, aplikasi harus mengikuti langkah-langkah berikut:

1. **Autentikasi dengan penyedia identitas pihak ketiga.** Aplikasi Anda harus memanggil penyedia identitas menggunakan antarmuka yang mereka sediakan. Cara yang tepat di mana Anda mengautentikasi pengguna bergantung pada penyedia dan pada platform apa aplikasi Anda berjalan. Biasanya, jika pengguna belum masuk, penyedia identitas berperan untuk menampilkan halaman masuk untuk penyedia tersebut.

   Setelah penyedia identitas mengautentikasi pengguna, penyedia mengembalikan token identitas web ke aplikasi Anda. Format token ini bergantung pada penyedia, tetapi biasanya berupa string karakter yang sangat panjang.

1. **Dapatkan AWS kredensil keamanan sementara.** Untuk melakukan ini, aplikasi Anda mengirimkan permintaan `AssumeRoleWithWebIdentity` untuk AWS Security Token Service (AWS STS). Permintaan ini berisi hal berikut ini:
   + Token identitas web dari langkah sebelumnya
   + ID aplikasi dari penyedia identitas
   + Amazon Resource Name (ARN) dari peran IAM yang Anda buat untuk penyedia identitas ini untuk aplikasi ini

   AWS STS mengembalikan satu set kredensi AWS keamanan yang kedaluwarsa setelah jangka waktu tertentu (3.600 detik, secara default).

   Berikut ini adalah sampel permintaan dan respons dari tindakan `AssumeRoleWithWebIdentity` dalam AWS STS. Token identitas web diperoleh dari penyedia identitas Login with Amazon.

   ```
   GET / HTTP/1.1
   Host: sts.amazonaws.com
   Content-Type: application/json; charset=utf-8
   URL: https://sts.amazonaws.com/?ProviderId=www.amazon.com
   &DurationSeconds=900&Action=AssumeRoleWithWebIdentity
   &Version=2011-06-15&RoleSessionName=web-identity-federation
   &RoleArn=arn:aws:iam::123456789012:role/GameRole
   &WebIdentityToken=Atza|IQEBLjAsAhQluyKqyBiYZ8-kclvGTYM81e...(remaining characters omitted)
   ```

   

   ```
   <AssumeRoleWithWebIdentityResponse
     xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
     <AssumeRoleWithWebIdentityResult>
       <SubjectFromWebIdentityToken>amzn1.account.AGJZDKHJKAUUSW6C44CHPEXAMPLE</SubjectFromWebIdentityToken>
       <Credentials>
         <SessionToken>AQoDYXdzEMf//////////wEa8AP6nNDwcSLnf+cHupC...(remaining characters omitted)</SessionToken>
         <SecretAccessKey>8Jhi60+EWUUbbUShTEsjTxqQtM8UKvsM6XAjdA==</SecretAccessKey>
         <Expiration>2013-10-01T22:14:35Z</Expiration>
         <AccessKeyId>06198791C436IEXAMPLE</AccessKeyId>
       </Credentials>
       <AssumedRoleUser>
         <Arn>arn:aws:sts::123456789012:assumed-role/GameRole/web-identity-federation</Arn>
         <AssumedRoleId>AROAJU4SA2VW5SZRF2YMG:web-identity-federation</AssumedRoleId>
       </AssumedRoleUser>
     </AssumeRoleWithWebIdentityResult>
     <ResponseMetadata>
       <RequestId>c265ac8e-2ae4-11e3-8775-6969323a932d</RequestId>
     </ResponseMetadata>
   </AssumeRoleWithWebIdentityResponse>
   ```

1. **Akses AWS sumber daya.** Respons dari AWS STS berisi informasi yang dibutuhkan aplikasi Anda untuk mengakses sumber daya DynamoDB:
   + Bidang `AccessKeyID`, `SecretAccessKey`, dan `SessionToken` berisi kredensial keamanan yang valid hanya untuk pengguna dan aplikasi ini. 
   + Bidang `Expiration` menandakan batas waktu untuk kredensial ini, setelah itu mereka tidak lagi valid.
   + Bidang `AssumedRoleId` berisi nama peran IAM khusus sesi yang telah diasumsikan oleh aplikasi. Aplikasi ini menghormati kontrol akses dalam dokumen kebijakan IAM selama sesi ini.
   + Bidang `SubjectFromWebIdentityToken` berisi ID unik yang muncul dalam variabel kebijakan IAM untuk penyedia identitas khusus ini. Berikut ini adalah variabel kebijakan IAM untuk penyedia yang didukung, dan beberapa contoh nilai untuk mereka:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/WIF.RunningYourApp.html)

Untuk kebijakan IAM contoh di mana variabel kebijakan ini digunakan, lihat [Kebijakan Contoh: Menggunakan ketentuan untuk kontrol parameter terperinci](specifying-conditions.md#FGAC_DDB.Examples).

*Untuk informasi selengkapnya tentang cara AWS STS menghasilkan kredensil akses sementara, lihat [Meminta Kredensil Keamanan Sementara di Panduan Pengguna IAM.](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)*

# Izin DynamoDB API: Referensi tindakan, sumber daya, dan kondisi
<a name="api-permissions-reference"></a>

Saat Anda menyiapkan [Manajemen Identitas dan Akses untuk Amazon DynamoDB](security-iam.md) dan menulis kebijakan izin yang dapat Anda lampirkan ke identitas IAM (kebijakan berbasis identitas), Anda dapat menggunakan daftar [Kunci tindakan, sumber daya, dan kondisi untuk Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html) dalam *Panduan Pengguna IAM* sebagai referensi. Halaman ini mencantumkan setiap operasi DynamoDB API, tindakan terkait yang dapat Anda berikan izin untuk melakukan tindakan, dan AWS sumber daya yang dapat Anda berikan izin. Anda menentukan tindakan dalam bidang `Action` kebijakan, dan Anda menentukan nilai sumber daya pada bidang `Resource` kebijakan.

Anda dapat menggunakan kunci kondisi AWS-wide dalam kebijakan DynamoDB Anda untuk menyatakan kondisi. Untuk daftar lengkap kunci AWS-wide, lihat [referensi elemen kebijakan IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) di Panduan Pengguna *IAM*.

Selain tombol kondisi AWS-wide, DynamoDB memiliki kunci spesifiknya sendiri yang dapat Anda gunakan dalam kondisi. Untuk informasi selengkapnya, lihat [Menggunakan ketentuan kebijakan IAM untuk kontrol akses terperinci](specifying-conditions.md).

## Topik terkait
<a name="w2aac39c21c15c15b9"></a>
+  [Manajemen Identitas dan Akses untuk Amazon DynamoDB](security-iam.md)
+ [Menggunakan ketentuan kebijakan IAM untuk kontrol akses terperinci](specifying-conditions.md)

# Validasi kepatuhan oleh industri untuk DynamoDB
<a name="Compliance"></a>

Untuk mempelajari apakah an Layanan AWS berada dalam lingkup program kepatuhan tertentu, lihat [Layanan AWS di Lingkup oleh Program Kepatuhan Layanan AWS](https://aws.amazon.com/compliance/services-in-scope/) dan pilih program kepatuhan yang Anda minati. Untuk informasi umum, lihat [Program AWS Kepatuhan Program AWS](https://aws.amazon.com/compliance/programs/) .

Anda dapat mengunduh laporan audit pihak ketiga menggunakan AWS Artifact. Untuk informasi selengkapnya, lihat [Mengunduh Laporan di AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Tanggung jawab kepatuhan Anda saat menggunakan Layanan AWS ditentukan oleh sensitivitas data Anda, tujuan kepatuhan perusahaan Anda, dan hukum dan peraturan yang berlaku. Untuk informasi selengkapnya tentang tanggung jawab kepatuhan Anda saat menggunakan Layanan AWS, lihat [Dokumentasi AWS Keamanan](https://docs.aws.amazon.com/security/).

# Ketahanan dan pemulihan bencana di Amazon DynamoDB
<a name="disaster-recovery-resiliency"></a>

Infrastruktur AWS global dibangun di sekitar AWS Wilayah dan Zona Ketersediaan. AWS Wilayah menyediakan beberapa Availability Zone yang terpisah secara fisik dan terisolasi, yang terhubung dengan latensi rendah, throughput tinggi, dan jaringan yang sangat redundan. Dengan Zona Ketersediaan, Anda dapat merancang serta mengoperasikan aplikasi dan basis data yang secara otomatis melakukan failover di antara Zona Ketersediaan tanpa gangguan. Zona Ketersediaan memiliki ketersediaan lebih tinggi, toleransi kesalahan lebih baik, dan lebih dapat diskalakan dibandingkan infrastruktur pusat data tunggal atau beberapa pusat data tradisional. 

Jika Anda harus melakukan replikasi data atau aplikasi Anda pada jarak geografis yang lebih luas, gunakan Wilayah Lokal AWS . Wilayah AWS Lokal adalah pusat data tunggal yang dirancang untuk melengkapi AWS Wilayah yang ada. Seperti semua AWS Wilayah, Wilayah AWS Lokal benar-benar terisolasi dari AWS Wilayah lain.

Untuk informasi selengkapnya tentang AWS Wilayah dan Availability Zone, lihat [infrastruktur AWS global](https://aws.amazon.com/about-aws/global-infrastructure/).

Amazon DynamoDB secara otomatis mereplikasi data Anda di tiga Availability Zone di suatu Wilayah, memberikan daya tahan tinggi bawaan dan SLA ketersediaan 99,99%. Selain itu, DynamoDB menawarkan beberapa fitur untuk membantu mendukung ketahanan data dan kebutuhan cadangan Anda.

**Pencadangan dan pemulihan sesuai permintaan**  
DynamoDB menyediakan kemampuan pencadangan sesuai permintaan. Hal ini memungkinkan Anda membuat pencadangan penuh dari tabel untuk retensi dan pengarsipan jangka panjang. Untuk informasi selengkapnya, lihat [Pencadangan dan pemulihan sesuai permintaan untuk DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Backup-and-Restore.html).

**Point-in-time pemulihan**  
Point-in-time pemulihan membantu melindungi tabel DynamoDB Anda dari operasi tulis atau hapus yang tidak disengaja. Dengan pemulihan titik waktu, Anda tidak perlu khawatir dengan membuat, mengelola, atau menjadwalkan pencadangan sesuai permintaan. Untuk informasi selengkapnya, lihat [Point-in-time pemulihan untuk DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Point-in-time-recovery.html).

**Tabel global yang disinkronkan di seluruh wilayah AWS **  
DynamoDB menyebarkan data dan lalu lintas untuk tabel Anda secara otomatis melalui sejumlah server yang cukup untuk menangani throughput dan persyaratan penyimpanan Anda, sekaligus mempertahankan performa yang konsisten dan cepat. Semua data Anda disimpan di solid-state disk (SSDs) dan secara otomatis direplikasi di beberapa Availability Zone di suatu AWS Wilayah, menyediakan ketersediaan tinggi bawaan dan daya tahan data. Anda dapat menggunakan tabel global untuk menjaga tabel DynamoDB tetap sinkron di seluruh Wilayah. AWS 

# Keamanan infrastruktur di Amazon DynamoDB
<a name="network-isolation"></a>

Sebagai layanan terkelola, Amazon DynamoDB dilindungi oleh AWS prosedur keamanan jaringan global yang dijelaskan [dalam perlindungan Infrastruktur yang terletak di](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) Well-Architected Framework. AWS 

Anda menggunakan panggilan API yang AWS dipublikasikan untuk mengakses DynamoDB melalui jaringan. Klien dapat menggunakan TLS (Transport Layer Security) versi 1.2 atau 1.3. Klien juga harus mendukung cipher suite dengan perfect forward secrecy (PFS) seperti Ephemeral Diffie-Hellman (DHE) atau Elliptic Curve Diffie-Hellman Ephemeral (ECDHE). Sebagian besar sistem modern seperti Java 7 dan sistem yang lebih baru mendukung mode ini. Selain itu, permintaan harus ditandatangani menggunakan ID kunci akses dan kunci akses rahasia yang dikaitkan dengan pengguna utama IAM. Atau Anda dapat menggunakan [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) untuk membuat kredensial keamanan sementara untuk menandatangani permintaan.

 Anda juga dapat menggunakan titik akhir cloud privat virtual (VPC) untuk DynamoDB guna mengaktifkan instans Amazon EC2 di VPC Anda untuk menggunakan alamat IP privatnya guna mengakses DynamoDB tanpa tersambung ke internet publik. Untuk informasi selengkapnya, lihat [Menggunakan titik akhir Amazon VPC untuk mengakses DynamoDB](#vpc-endpoints-dynamodb). 

## Menggunakan titik akhir Amazon VPC untuk mengakses DynamoDB
<a name="vpc-endpoints-dynamodb"></a>

Untuk alasan keamanan, banyak AWS pelanggan menjalankan aplikasi mereka dalam lingkungan Amazon Virtual Private Cloud (Amazon VPC). Dengan Amazon VPC, Anda dapat meluncurkan instans Amazon EC2 ke virtual private cloud, yang secara logis terisolasi dari jaringan lain—termasuk internet publik. Dengan Amazon VPC, Anda dapat mengontrol rentang alamat IP, subnet, tabel perutean, gateway jaringan, dan pengaturan keamanan.

**catatan**  
Jika Anda membuat Akun AWS setelah 4 Desember 2013, maka Anda sudah memiliki VPC default di masing-masing. Wilayah AWS VPC default siap untuk Anda gunakan—Anda dapat segera menggunakannya tanpa harus melakukan langkah-langkah konfigurasi tambahan.  
Untuk informasi selengkapnya, lihat [VPC Default dan Subnet Default](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html) di *Panduan Pengguna Amazon VPC*.

Untuk mengakses internet publik, VPC Anda harus memiliki gateway internet—router virtual yang menghubungkan VPC Anda ke internet. Hal ini memungkinkan aplikasi yang berjalan di Amazon EC2 di VPC Anda mengakses sumber daya internet, seperti Amazon DynamoDB.

Secara default, komunikasi ke dan dari DynamoDB menggunakan protokol HTTPS, yang melindungi lalu lintas jaringan dengan menggunakan enkripsi. SSL/TLS Diagram berikut menunjukkan instans Amazon EC2 dalam VPC yang mengakses DynamoDB, dengan meminta DynamoDB menggunakan gateway internet daripada titik akhir VPC.

![\[Diagram alur kerja yang menunjukkan instans Amazon EC2 yang mengakses DynamoDB melalui router, gateway internet, dan internet.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/ddb-no-vpc-endpoint.png)


Banyak pelanggan memiliki kekhawatiran yang sah mengenai privasi dan keamanan saat mengirim dan menerima data melalui internet publik. Anda dapat mengatasi masalah ini menggunakan jaringan privat virtual (VPN) untuk merutekan semua lalu lintas jaringan DynamoDB melalui infrastruktur jaringan perusahaan Anda. Namun, pendekatan ini dapat menimbulkan tantangan bandwidth dan ketersediaan.

Titik akhir VPC untuk DynamoDB dapat mengatasi tantangan ini. *Titik akhir VPC* untuk DynamoDB memungkinkan instans Amazon EC2 di VPC menggunakan alamat IP privat untuk mengakses DynamoDB tanpa tersambung ke internet publik. Instans EC2 Anda tidak memerlukan alamat IP publik, dan Anda tidak memerlukan gateway internet, perangkat NAT, atau gateway privat virtual di VPC Anda. Anda menggunakan kebijakan titik akhir untuk mengontrol akses ke DynamoDB. Lalu lintas antara VPC Anda dan AWS layanan tidak meninggalkan jaringan Amazon.

**catatan**  
 Bahkan ketika Anda menggunakan alamat IP publik, semua komunikasi VPC antara instance dan layanan yang dihosting tetap pribadi di AWS dalam jaringan. AWS Paket yang berasal dari AWS jaringan dengan tujuan di jaringan tetap berada di AWS jaringan AWS global, kecuali lalu lintas ke atau dari Wilayah AWS Tiongkok. 

Saat Anda membuat titik akhir VPC untuk DynamoDB, setiap permintaan ke titik akhir DynamoDB dalam Wilayah (misalnya, *dynamodb.us-west-2.amazonaws.com*) dirutekan ke titik akhir DynamoDB privat dalam jaringan Amazon. Anda tidak perlu memodifikasi aplikasi yang berjalan pada instans EC2 di VPC Anda. Nama titik akhir tetap sama, namun rute ke DynamoDB tetap sepenuhnya berada dalam jaringan Amazon, dan tidak mengakses internet publik. 

Diagram berikut menunjukkan bagaimana instans EC2 di VPC dapat menggunakan titik akhir VPC untuk mengakses DynamoDB.

![\[Diagram alur kerja menunjukkan instans EC2 yang mengakses DynamoDB melalui router dan titik akhir VPC saja.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/ddb-yes-vpc-endpoint.png)


Untuk informasi selengkapnya, lihat [Tutorial: Menggunakan titik akhir VPC untuk DynamoDB](#vpc-endpoints-dynamodb-tutorial).

### Berbagi titik akhir Amazon VPC dan DynamoDB
<a name="vpc-endpoints-dynamodb-sharing"></a>

Untuk mengaktifkan akses ke layanan DynamoDB melalui titik akhir gateway subnet VPC, Anda harus memiliki izin akun pemilik untuk subnet VPC tersebut.

 Setelah titik akhir gateway subnet VPC diberikan akses ke DynamoDB, akun AWS mana pun yang memiliki akses ke subnet tersebut dapat menggunakan DynamoDB. Hal ini berarti semua pengguna akun dalam subnet VPC dapat menggunakan tabel DynamoDB apa pun yang dapat mereka akses. Ini termasuk tabel DynamoDB yang terkait dengan akun yang berbeda dari subnet VPC. Pemilik subnet VPC masih dapat membatasi pengguna tertentu dalam subnet untuk menggunakan layanan DynamoDB melalui titik akhir gateway, sesuai kebijakannya. 

### Tutorial: Menggunakan titik akhir VPC untuk DynamoDB
<a name="vpc-endpoints-dynamodb-tutorial"></a>

Bagian ini memandu Anda dalam menyiapkan dan menggunakan titik akhir VPC untuk DynamoDB.

**Topics**
+ [Langkah 1: Luncurkan instans Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance)
+ [Langkah 2: Konfigurasikan instans Amazon EC2 Anda](#vpc-endpoints-dynamodb-tutorial.configure-ec2-instance)
+ [Langkah 3: Membuat titik akhir VPC untuk DynamoDB](#vpc-endpoints-dynamodb-tutorial.create-endpoint)
+ [Langkah 4: (Opsional) Hapus](#vpc-endpoints-dynamodb-tutorial.clean-up)

#### Langkah 1: Luncurkan instans Amazon EC2
<a name="vpc-endpoints-dynamodb-tutorial.launch-ec2-instance"></a>

Pada langkah ini, Anda meluncurkan instans Amazon EC2 di Amazon VPC default Anda. Anda kemudian dapat membuat dan menggunakan titik akhir VPC untuk DynamoDB.

1. Buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Pilih **Luncurkan Instans**, dan lakukan hal berikut:

   Langkah 1: Pilih Amazon Machine Image (AMI)
   + Di bagian atas daftar AMIs, buka **Amazon Linux AMI** dan pilih **Pilih**.

   Langkah 2: Pilih Jenis Instans
   + Di bagian atas daftar jenis instans, pilih**t2.micro**.
   + Pilih **Berikutnya: Konfigurasikan Detail Instans**.

   Langkah 3: Konfigurasikan Detail Instans
   + Buka **Jaringan**, lalu pilih VPC default Anda.

     Pilih **Berikutnya: Tambahkan Penyimpanan**.

   Langkah 4: Tambahkan Penyimpanan
   + Lewati langkah ini dengan memilih **Selanjutnya: Instans Tag**.

   Langkah 5: Instans Tag
   + Lewati langkah ini dengan memilih **Berikutnya: Konfigurasikan Grup Keamanan**.

   Langkah 6: Konfigurasikan Grup Keamanan
   + Pilih **Pilih grup keamanan yang ada**.
   + Dalam daftar grup keamanan, pilih **default**. Ini adalah grup keamanan default untuk VPC Anda.
   + Pilih **Berikutnya: Tinjau dan Luncurkan**.

   Langkah 7: Tinjau Peluncuran Instans
   + Pilih **Luncurkan**.

1. Di jendela **Pilih pasangan kunci yang ada atau buat pasangan kunci baru**, lakukan salah satu hal berikut:
   + Jika Anda tidak memiliki pasangan kunci Amazon EC2, pilih **Buat pasangan kunci baru** dan ikuti petunjuknya. Anda akan diminta untuk mengunduh file kunci privat (file *.pem*); Anda akan memerlukan file ini nanti saat Anda masuk ke instans Amazon EC2 Anda.
   + Jika Anda sudah memiliki pasangan kunci Amazon EC2 yang ada, buka **Pilih pasangan kunci** dan pilih pasangan kunci Anda dari daftar. Anda harus sudah memiliki file kunci privat (file *.pem*) yang tersedia untuk masuk ke instans Amazon EC2 Anda.

1. Ketika Anda telah mengonfigurasi pasangan kunci, pilih **Luncurkan Instans**.

1. Kembali ke halaman beranda konsol Amazon EC2 dan pilih instans yang Anda luncurkan. Pada panel bawah, di tab **Deskripsi**, cari **DNS Publik** untuk instans Anda. Sebagai contoh: `ec2-00-00-00-00.us-east-1.compute.amazonaws.com`.

   Catat nama DNS publik ini, karena Anda akan memerlukannya di langkah berikutnya dalam tutorial ini ([Langkah 2: Konfigurasikan instans Amazon EC2 Anda](#vpc-endpoints-dynamodb-tutorial.configure-ec2-instance)).

**catatan**  
Diperlukan waktu beberapa menit agar instans Amazon EC2 Anda tersedia. Sebelum Anda melanjutkan ke langkah berikutnya, pastikan **Status Instans** dalam kondisi `running` dan semua **Pemeriksaan Status** telah lulus.

#### Langkah 2: Konfigurasikan instans Amazon EC2 Anda
<a name="vpc-endpoints-dynamodb-tutorial.configure-ec2-instance"></a>

Ketika instans Amazon EC2 Anda tersedia, Anda akan dapat masuk ke dalamnya dan mempersiapkannya untuk penggunaan pertama.

**catatan**  
Langkah-langkah berikut menganggap bahwa Anda terhubung ke instans Amazon EC2 dari komputer yang menjalankan Linux. Untuk cara lain untuk terhubung, lihat [Connect to Your Linux Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) di Panduan Pengguna Amazon EC2.

1. Anda perlu mengotorisasi lalu lintas SSH masuk ke instans Amazon EC2 Anda. Untuk melakukan ini, Anda akan membuat grup keamanan EC2 baru, lalu menetapkan grup keamanan tersebut ke instans EC2 Anda.

   1. Pada panel navigasi, pilih **Grup Keamanan**.

   1. Pilih **Buat Grup Keamanan**. Di jendela **Buat Grup Keamanan**, lakukan hal berikut:
      + **Nama grup keamanan**—ketikkan nama untuk grup keamanan Anda. Misalnya: `my-ssh-access`
      + **Deskripsi**—ketikkan deskripsi singkat untuk grup keamanan.
      + **VPC**—pilih VPC default Anda.
      + Di bagian **Aturan grup keamanan**, pilih **Tambahkan Aturan** dan lakukan hal berikut:
        + **Jenis**—pilihlah SSH.
        + **Sumber**—pilih IP Saya.

      Jika pengaturan sudah sesuai keinginan Anda, pilih **Buat**.

   1. Di panel navigasi, pilih **Contoh**.

   1. Pilih instans Amazon EC2 yang diluncurkan di [Langkah 1: Luncurkan instans Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance).

   1. Pilih **Tindakan** –> **Jaringan** –> **Ubah Grup Keamanan**.

   1. Di **Ubah Grup Keamanan**, pilih grup keamanan yang Anda buat sebelumnya dalam prosedur ini (misalnya: `my-ssh-access`). Saat ini grup keamanan `default` juga harus dipilih. Bila pengaturan sesuai keinginan Anda, pilih **Tetapkan Grup Keamanan**.

1. Gunakan perintah `ssh` untuk masuk ke instans Amazon EC2 Anda, seperti dalam contoh berikut.

   ```
   ssh -i my-keypair.pem ec2-user@public-dns-name
   ```

   Anda perlu menentukan file kunci privat Anda (file *.pem*) dan nama DNS publik dari instans Anda. (Lihat [Langkah 1: Luncurkan instans Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance)). 

   ID login adalah `ec2-user`. Tidak diperlukan kata sandi.

1. Konfigurasikan AWS kredensil Anda seperti yang ditunjukkan pada contoh berikut. Masukkan ID kunci akses, kunci rahasia, dan nama Wilayah default AWS saat diminta.

   ```
   aws configure
   ```

   ```
   AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
   AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   Default region name [None]: us-east-1
   Default output format [None]:
   ```

Anda sekarang siap untuk membuat titik akhir VPC untuk DynamoDB.

#### Langkah 3: Membuat titik akhir VPC untuk DynamoDB
<a name="vpc-endpoints-dynamodb-tutorial.create-endpoint"></a>

Pada langkah ini, Anda akan membuat titik akhir VPC untuk DynamoDB dan mengujinya untuk memastikannya berfungsi.

1. Sebelum memulai, verifikasi bahwa Anda dapat berkomunikasi dengan DynamoDB menggunakan titik akhir publiknya.

   ```
   aws dynamodb list-tables
   ```

   Outputnya akan menampilkan daftar tabel DynamoDB yang Anda miliki saat ini. (Jika Anda tidak memiliki tabel apa pun, daftarnya akan kosong.).

1. Verifikasi bahwa DynamoDB adalah layanan yang tersedia untuk membuat titik akhir VPC di Wilayah saat ini. AWS (Perintah ditampilkan dalam teks tebal, diikuti dengan contoh output.)

   ```
   aws ec2 describe-vpc-endpoint-services
   ```

   ```
   {
       "ServiceNames": [
           "com.amazonaws.us-east-1.s3",
           "com.amazonaws.us-east-1.dynamodb"
       ]
   }
   ```

   Dalam contoh output, DynamoDB adalah salah satu layanan yang tersedia, sehingga Anda dapat melanjutkan dengan membuat titik akhir VPC untuk layanan tersebut.

1. Tentukan pengidentifikasi VPC Anda.

   ```
   aws ec2 describe-vpcs
   ```

   ```
   {
       "Vpcs": [
           {
               "VpcId": "vpc-0bbc736e", 
               "InstanceTenancy": "default", 
               "State": "available", 
               "DhcpOptionsId": "dopt-8454b7e1", 
               "CidrBlock": "172.31.0.0/16", 
               "IsDefault": true
           }
       ]
   }
   ```

   Dalam contoh output, ID VPC adalah `vpc-0bbc736e`.

1. Buat titik akhir VPC. Untuk parameter `--vpc-id`, tentukan ID VPC dari langkah sebelumnya. Gunakan parameter `--route-table-ids` untuk mengasosiasikan titik akhir dengan tabel rute Anda.

   ```
   aws ec2 create-vpc-endpoint --vpc-id vpc-0bbc736e --service-name com.amazonaws.us-east-1.dynamodb --route-table-ids rtb-11aa22bb
   ```

   ```
   {
       "VpcEndpoint": {
           "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", 
           "VpcId": "vpc-0bbc736e", 
           "State": "available", 
           "ServiceName": "com.amazonaws.us-east-1.dynamodb", 
           "RouteTableIds": [
               "rtb-11aa22bb"
           ],
           "VpcEndpointId": "vpce-9b15e2f2", 
           "CreationTimestamp": "2017-07-26T22:00:14Z"
       }
   }
   ```

1. Verifikasi bahwa Anda dapat mengakses DynamoDB melalui titik akhir VPC.

   ```
   aws dynamodb list-tables
   ```

   Jika mau, Anda dapat mencoba beberapa AWS CLI perintah lain untuk DynamoDB. Untuk informasi selengkapnya, lihat[ Referensi Perintah AWS AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/).

#### Langkah 4: (Opsional) Hapus
<a name="vpc-endpoints-dynamodb-tutorial.clean-up"></a>

Jika Anda ingin menghapus sumber daya yang Anda buat dalam tutorial ini, ikuti prosedur berikut:

**Untuk menghapus titik akhir VPC Anda untuk DynamoDB**

1. Masuk ke instans Amazon EC2 Anda.

1. Tentukan ID titik akhir VPC.

   ```
   aws ec2 describe-vpc-endpoints
   ```

   ```
   {
       "VpcEndpoint": {
           "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", 
           "VpcId": "vpc-0bbc736e", 
           "State": "available", 
           "ServiceName": "com.amazonaws.us-east-1.dynamodb", 
           "RouteTableIds": [], 
           "VpcEndpointId": "vpce-9b15e2f2", 
           "CreationTimestamp": "2017-07-26T22:00:14Z"
       }
   }
   ```

   Dalam contoh output, ID titik akhir VPC adalah `vpce-9b15e2f2`.

1. Hapus titik akhir VPC.

   ```
   aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-9b15e2f2
   ```

   ```
   {
       "Unsuccessful": []
   }
   ```

   Array kosong `[]` menunjukkan keberhasilan (tidak ada permintaan yang gagal).

**Untuk menghentikan instans Amazon EC2 Anda**

1. Buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Di panel navigasi, pilih **Instans**.

1. Pilih instans Amazon EC2 Anda.

1. Pilih **Tindakan**, **Status Instans**, **Akhiri**.

1. Dalam jendela konfirmasi, pilih **Ya, Hentikan**.

# AWS PrivateLink untuk DynamoDB
<a name="privatelink-interface-endpoints"></a>

Dengan AWS PrivateLink untuk DynamoDB, Anda dapat menyediakan antarmuka titik akhir *Amazon VPC* (titik akhir antarmuka) di cloud pribadi virtual Anda (Amazon VPC). Titik akhir ini dapat diakses langsung dari aplikasi yang ada di tempat melalui VPN dan Direct Connect, atau berbeda dengan peering Wilayah AWS [VPC Amazon](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). Menggunakan AWS PrivateLink dan antarmuka endpoint, Anda dapat menyederhanakan konektivitas jaringan pribadi dari aplikasi Anda ke DynamoDB.

Aplikasi di VPC Anda tidak memerlukan alamat IP publik untuk berkomunikasi dengan DynamoDB menggunakan titik akhir antarmuka VPC untuk operasi DynamoDB. Titik akhir antarmuka diwakili oleh satu atau lebih antarmuka jaringan elastis (ENIs) yang diberi alamat IP pribadi dari subnet di VPC Amazon Anda. Permintaan ke DynamoDB melalui titik akhir antarmuka tetap berada di jaringan Amazon. Anda juga dapat mengakses titik akhir antarmuka di VPC Amazon dari aplikasi lokal AWS Direct Connect melalui AWS Virtual Private Network atau ().Site-to-Site VPN[Untuk informasi selengkapnya tentang cara menghubungkan VPC Amazon dengan jaringan lokal, lihat [Panduan Direct Connect Pengguna dan Panduan Pengguna](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html).AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)

*Untuk informasi umum tentang titik akhir antarmuka, lihat [Antarmuka Amazon VPC endpoints AWS PrivateLink(](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html)) di Panduan.AWS PrivateLink * AWS PrivateLink juga didukung untuk titik akhir Amazon DynamoDB Streams. Untuk informasi selengkapnya, lihat [AWS PrivateLink untuk DynamoDB Streams](privatelink-streams.md).

**Topics**
+ [Jenis titik akhir Amazon VPC untuk Amazon DynamoDB](#types-of-vpc-endpoints-for-ddb)
+ [Pertimbangan saat menggunakan AWS PrivateLink untuk Amazon DynamoDB](#privatelink-considerations)
+ [Membuat titik akhir Amazon VPC](#ddb-creating-vpc)
+ [Mengakses titik akhir antarmuka Amazon DynamoDB](#accessing-ddb-interface-endpoints)
+ [Mengakses tabel DynamoDB dan mengontrol operasi API dari titik akhir antarmuka DynamoDB](#accessing-tables-apis-from-interface-endpoints)
+ [Memperbarui konfigurasi DNS on-premise](#updating-on-premises-dns-config)
+ [Membuat kebijakan endpoint Amazon VPC untuk DynamoDB](#creating-vpc-endpoint-policy)
+ [Menggunakan titik akhir DynamoDB dengan Akses Pribadi Konsol Manajemen AWS](#ddb-endpoints-private-access)
+ [AWS PrivateLink untuk DynamoDB Streams](privatelink-streams.md)
+ [Menggunakan AWS PrivateLink untuk DynamoDB Accelerator (DAX)](dax-private-link.md)

## Jenis titik akhir Amazon VPC untuk Amazon DynamoDB
<a name="types-of-vpc-endpoints-for-ddb"></a>

*Anda dapat menggunakan dua jenis titik akhir Amazon VPC untuk mengakses Amazon DynamoDB: titik akhir *gateway dan titik akhir* antarmuka (dengan menggunakan).* AWS PrivateLink*Titik akhir gateway* adalah gateway yang Anda tentukan dalam tabel rute untuk mengakses DynamoDB dari VPC Amazon Anda melalui jaringan. AWS *Titik akhir antarmuka memperluas fungsionalitas titik* akhir gateway dengan menggunakan alamat IP pribadi untuk merutekan permintaan ke DynamoDB dari dalam VPC Amazon Anda, di tempat, atau dari VPC Amazon di tempat lain dengan menggunakan peering Amazon VPC atau. Wilayah AWS AWS Transit Gateway Untuk informasi lebih lanjut, lihat [Apa itu peering Amazon VPC?](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) dan [Transit Gateway vs Pengintip VPC Amazon](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/transit-gateway-vs-vpc-peering.html).

Titik akhir antarmuka kompatibel dengan titik akhir gateway. Jika Anda memiliki titik akhir gateway yang ada di VPC Amazon, Anda dapat menggunakan kedua jenis titik akhir di VPC Amazon yang sama.


|  Titik akhir Gateway untuk DynamoDB  |  Endpoint antarmuka untuk DynamoDB  | 
| --- | --- | 
|  Dalam kedua kasus, lalu lintas jaringan Anda tetap berada di AWS jaringan.  | 
|  Menggunakan alamat IP publik Amazon DynamoDB  |  Gunakan alamat IP pribadi dari Amazon VPC Anda untuk mengakses Amazon DynamoDB  | 
|  Jangan izinkan mengakses dari on-premise  |  Izinkan mengakses dari on-premise  | 
|  Jangan izinkan akses dari yang lain Wilayah AWS  |  Izinkan akses dari titik akhir VPC Amazon di titik lain dengan Wilayah AWS menggunakan peering VPC Amazon atau AWS Transit Gateway  | 
|  Tidak ditagih  |  Ditagih  | 

*Untuk informasi selengkapnya tentang titik akhir gateway, lihat titik akhir [Gateway Amazon VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-gateway.html) di Panduan.AWS PrivateLink *

## Pertimbangan saat menggunakan AWS PrivateLink untuk Amazon DynamoDB
<a name="privatelink-considerations"></a>

Pertimbangan Amazon VPC berlaku untuk Amazon AWS PrivateLink DynamoDB. Untuk informasi selengkapnya, lihat [Pertimbangan antarmuka titik akhir](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations) dan [AWS PrivateLink kuota](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html) dalam *AWS PrivateLink Panduan*. Selain itu, larangan berikut juga berlaku.

AWS PrivateLink untuk Amazon DynamoDB tidak mendukung hal berikut:
+ Keamanan Lapisan Pengangkutan (TLS) 1.1
+ Layanan Sistem Nama Domain Pribadi dan Hybrid (DNS)

**penting**  
Jangan membuat zona host pribadi untuk mengganti nama DNS titik akhir DynamoDB (`dynamodb.region.amazonaws.com`seperti `*.region.amazonaws.com` atau) untuk merutekan lalu lintas ke titik akhir antarmuka Anda. Konfigurasi DNS DynamoDB dapat berubah seiring waktu.   
 Penggantian DNS khusus tidak kompatibel dengan perubahan ini dan dapat menyebabkan permintaan merutekan secara tak terduga melalui alamat IP publik alih-alih titik akhir antarmuka Anda.   
 Untuk mengakses DynamoDB AWS PrivateLink melalui, konfigurasikan klien Anda untuk menggunakan URL endpoint Amazon VPC secara langsung (misalnya,). `https://vpce-1a2b3c4d-5e6f.dynamodb.region.vpce.amazonaws.com`

Anda dapat mengirimkan hingga 50.000 permintaan per detik untuk setiap AWS PrivateLink titik akhir yang Anda aktifkan.

**catatan**  
Batas waktu konektivitas jaringan ke AWS PrivateLink titik akhir tidak berada dalam lingkup respons kesalahan DynamoDB dan perlu ditangani dengan tepat oleh aplikasi Anda yang terhubung ke titik akhir. PrivateLink 

## Membuat titik akhir Amazon VPC
<a name="ddb-creating-vpc"></a>

*Untuk membuat titik akhir antarmuka VPC Amazon, lihat Membuat titik akhir [VPC Amazon](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) di Panduan.AWS PrivateLink *

## Mengakses titik akhir antarmuka Amazon DynamoDB
<a name="accessing-ddb-interface-endpoints"></a>

**Saat Anda membuat titik akhir antarmuka, DynamoDB menghasilkan dua jenis nama DNS DynamoDB spesifik titik akhir: Regional dan Zonal.** 
+ Nama DNS *Regional* mencakup ID titik akhir VPC Amazon yang unik, pengenal layanan, Wilayah AWS dan namanya. `vpce.amazonaws.com` Misalnya, untuk ID titik akhir VPC Amazon`vpce-1a2b3c4d`, nama DNS yang dihasilkan mungkin mirip dengan. `vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com`
+ Nama DNS *Zonal* mencakup Zona Ketersediaan—misalnya, `vpce-1a2b3c4d-5e6f-us-east-1a.dynamodb.us-east-1.vpce.amazonaws.com`. Anda dapat menggunakan opsi ini jika arsitektur Anda mengisolasi Zona Ketersediaan. Contoh, Anda bisa menggunakannya untuk kontainer kesalahan atau untuk mengurangi biaya transfer data Regional.

**catatan**  
Untuk mencapai keandalan yang optimal, sebaiknya gunakan layanan Anda di minimal tiga zona ketersediaan.

## Mengakses tabel DynamoDB dan mengontrol operasi API dari titik akhir antarmuka DynamoDB
<a name="accessing-tables-apis-from-interface-endpoints"></a>

Anda dapat menggunakan AWS CLI atau AWS SDKs untuk mengakses tabel DynamoDB dan mengontrol operasi API melalui titik akhir antarmuka DynamoDB.

### AWS CLI contoh
<a name="privatelink-ddb-aws-cli-examples"></a>

Untuk mengakses tabel DynamoDB atau operasi API kontrol DynamoDB melalui titik akhir antarmuka DynamoDB dalam perintah, gunakan parameter dan. AWS CLI `--region` `--endpoint-url`

**Contoh: Buat titik akhir VPC**

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name com.amazonaws.us-east-1.dynamodb \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \
--vpc-endpoint-type Interface \
--security-group-ids client-sg-id
```

**Contoh: Memodifikasi titik akhir VPC**

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-endpoint-id \
--policy-document policy-document \ #example optional parameter
--add-security-group-ids security-group-ids \ #example optional parameter 
# any additional parameters needed, see Privatelink documentation for more details
```

**Contoh: Daftar tabel menggunakan URL endpoint**

Dalam contoh berikut, ganti Region `us-east-1` dan nama DNS dari `vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` ID endpoint VPC dengan informasi Anda sendiri.

```
aws dynamodb --region us-east-1 --endpoint https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com list-tables
```

### AWS Contoh SDK
<a name="privatelink-ddb-aws-sdk-examples"></a>

Untuk mengakses tabel DynamoDB atau operasi API kontrol DynamoDB melalui titik akhir antarmuka DynamoDB saat menggunakan, perbarui versi Anda ke versi terbaru. AWS SDKs SDKs Kemudian, konfigurasikan klien Anda untuk menggunakan URL titik akhir untuk mengakses tabel atau operasi API kontrol DynamoDB melalui titik akhir antarmuka DynamoDB.

------
#### [ SDK for Python (Boto3) ]

**Contoh: Gunakan URL endpoint untuk mengakses tabel DynamoDB**  
Dalam contoh berikut, ganti Wilayah `us-east-1` dan ID titik akhir VPC `https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` dengan informasi Anda sendiri.

```
ddb_client = session.client(
service_name='dynamodb',
region_name='us-east-1',
endpoint_url='https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com'
)
```

------
#### [ SDK for Java 1.x ]

**Contoh: Gunakan URL endpoint untuk mengakses tabel DynamoDB**  
Dalam contoh berikut, ganti Wilayah `us-east-1` dan ID titik akhir VPC `https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` dengan informasi Anda sendiri.

```
//client build with endpoint config  
final AmazonDynamoDB dynamodb = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
```

------
#### [ SDK for Java 2.x ]

**Contoh: Gunakan URL endpoint untuk mengakses tabel DynamoDB**  
Dalam contoh berikut, ganti ID endpoint Region us-east-1 dan https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com VPC dengan informasi Anda sendiri.

```
Region region = Region.US_EAST_1;
dynamoDbClient = DynamoDbClient.builder().region(region)
.endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com"))
.build()
```

------

## Memperbarui konfigurasi DNS on-premise
<a name="updating-on-premises-dns-config"></a>

 Saat menggunakan nama DNS khusus titik akhir untuk mengakses titik akhir antarmuka DynamoDB, Anda tidak perlu memperbarui penyelesai DNS lokal Anda. Anda dapat menyelesaikan nama DNS spesifik titik akhir dengan alamat IP pribadi titik akhir antarmuka dari domain DNS DynamoDB publik. 

### Menggunakan titik akhir antarmuka untuk mengakses DynamoDB tanpa titik akhir gateway atau gateway internet di Amazon VPC
<a name="using-interface-endpoints"></a>

Titik akhir antarmuka di VPC Amazon Anda dapat merutekan aplikasi VPC di Amazon dan aplikasi lokal ke DynamoDB melalui jaringan Amazon, seperti yang diilustrasikan dalam diagram berikut.

![\[Diagram alir data yang menunjukkan akses dari aplikasi VPC lokal dan di Amazon ke DynamoDB; dengan menggunakan titik akhir antarmuka dan. AWS PrivateLink\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/PrivateLink-interfaceEndpoints.png)


Diagram ini menggambarkan hal sebagai berikut: 
+ Jaringan lokal Anda menggunakan Direct Connect atau menyambung Site-to-Site VPN ke Amazon VPC A.
+ Aplikasi Anda lokal dan di Amazon VPC A menggunakan nama DNS khusus titik akhir untuk mengakses DynamoDB melalui titik akhir antarmuka DynamoDB.
+ Aplikasi lokal mengirim data ke titik akhir antarmuka di Amazon VPC melalui Direct Connect (atau). Site-to-Site VPN AWS PrivateLink memindahkan data dari titik akhir antarmuka ke DynamoDB melalui jaringan. AWS 
+ Aplikasi VPC di Amazon juga mengirim lalu lintas ke titik akhir antarmuka. AWS PrivateLink memindahkan data dari titik akhir antarmuka ke DynamoDB melalui jaringan. AWS 

### Menggunakan titik akhir gateway dan titik akhir antarmuka bersama-sama di Amazon VPC yang sama untuk mengakses DynamoDB
<a name="using-gateway-and-interface-endpoints"></a>

Anda dapat membuat titik akhir antarmuka dan mempertahankan titik akhir gateway yang ada di VPC Amazon yang sama, seperti yang ditunjukkan diagram berikut. Dengan mengambil pendekatan ini, Anda mengizinkan aplikasi VPC di Amazon untuk terus mengakses DynamoDB melalui titik akhir gateway, yang tidak ditagih. Kemudian, hanya aplikasi lokal Anda yang akan menggunakan titik akhir antarmuka untuk mengakses DynamoDB. Untuk mengakses DynamoDB dengan cara ini, Anda harus memperbarui aplikasi lokal Anda untuk menggunakan nama DNS khusus titik akhir untuk DynamoDB.

![\[Diagram aliran data yang menunjukkan akses ke DynamoDB dengan menggunakan titik akhir gateway dan titik akhir antarmuka bersama-sama.\]](http://docs.aws.amazon.com/id_id/amazondynamodb/latest/developerguide/images/PL-Image2-InterfaceAndGatewayEP.png)


Diagram ini menggambarkan hal sebagai berikut: 
+ Aplikasi lokal menggunakan nama DNS khusus titik akhir untuk mengirim data ke titik akhir antarmuka dalam VPC Amazon melalui (atau). Direct Connect Site-to-Site VPN AWS PrivateLink memindahkan data dari titik akhir antarmuka ke DynamoDB melalui jaringan. AWS 
+ Menggunakan nama DynamoDB Regional default, aplikasi VPC di Amazon mengirim data ke titik akhir gateway yang terhubung ke DynamoDB melalui jaringan. AWS 

Untuk informasi selengkapnya tentang titik akhir gateway, lihat [Gateway titik akhir VPC Amazon](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html) di Panduan Pengguna *Amazon VPC*. 

## Membuat kebijakan endpoint Amazon VPC untuk DynamoDB
<a name="creating-vpc-endpoint-policy"></a>

Anda dapat melampirkan kebijakan endpoint ke endpoint Amazon VPC yang mengontrol akses ke DynamoDB. Kebijakan titik akhir menentukan informasi berikut: 
+ Prinsip AWS Identity and Access Management (IAM) yang dapat melakukan tindakan 
+ Tindakan-tindakan yang dapat dilakukan 
+ Sumber daya yang padanya tindakan dapat dilakukan 

**Topics**
+ [Contoh: Membatasi akses ke tabel tertentu dari titik akhir VPC Amazon](#privatelink-example-restrict-access-to-bucket)

### Contoh: Membatasi akses ke tabel tertentu dari titik akhir VPC Amazon
<a name="privatelink-example-restrict-access-to-bucket"></a>

Anda dapat membuat kebijakan endpoint yang membatasi akses hanya ke tabel DynamoDB tertentu. Jenis kebijakan ini berguna jika Anda memiliki kebijakan lain Layanan AWS di VPC Amazon Anda yang menggunakan tabel. Kebijakan tabel berikut membatasi akses hanya ke file. `DOC-EXAMPLE-TABLE` Untuk menggunakan kebijakan endpoint ini, ganti `DOC-EXAMPLE-TABLE` dengan nama tabel Anda.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Id": "Policy1216114807515",
  "Statement": [
    { "Sid": "Access-to-specific-table-only",
      "Principal": "*",
      "Action": [
        "dynamodb:GetItem",
        "dynamodb:PutItem"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:dynamodb:us-east-1:111122223333:table/DOC-EXAMPLE-TABLE",
                   "arn:aws:dynamodb:us-east-1:111122223333:table/DOC-EXAMPLE-TABLE/*"]
    }
  ]
}
```

------

## Menggunakan titik akhir DynamoDB dengan Akses Pribadi Konsol Manajemen AWS
<a name="ddb-endpoints-private-access"></a>

[https://console.aws.amazon.com/dynamodb](https://console.aws.amazon.com/dynamodb)

Untuk mengonfigurasi DynamoDB agar dapat diakses Konsol Manajemen AWS di Private Access, Anda harus membuat dua titik akhir VPC berikut:
+ `com.amazonaws.<region>.dynamodb`
+ `com.amazonaws.<region>.dynamodb-streams`

Saat Anda membuat titik akhir VPC, navigasikan ke konsol Route53 dan buat zona host pribadi untuk DynamoDB menggunakan titik akhir regional. `dynamodb.us-east-1.amazonaws.com`

Buat dua catatan alias berikut di zona host pribadi:
+ `dynamodb.<region>.amazonaws.com`yang merutekan lalu lintas ke titik akhir VPC. `com.amazonaws.<region>.dynamodb`
+ `streams.dynamodb.<region>.amazonaws.com`yang merutekan lalu lintas ke titik akhir VPC. `com.amazonaws.<region>.dynamodb-streams`

# AWS PrivateLink untuk DynamoDB Streams
<a name="privatelink-streams"></a>

Dengan AWS PrivateLink Amazon DynamoDB Streams, Anda dapat menyediakan antarmuka titik akhir Amazon VPC (titik akhir antarmuka) di cloud pribadi virtual Anda (Amazon VPC). Titik akhir ini dapat diakses langsung dari aplikasi yang ada di tempat melalui VPN dan Direct Connect, atau berbeda dengan peering Wilayah AWS VPC Amazon. Menggunakan AWS PrivateLink dan antarmuka endpoint, Anda dapat menyederhanakan konektivitas jaringan pribadi dari aplikasi Anda ke DynamoDB Streams.

Aplikasi di Amazon VPC Anda tidak memerlukan alamat IP publik untuk berkomunikasi dengan DynamoDB Streams menggunakan titik akhir antarmuka Amazon VPC untuk operasi DynamoDB Streams. Titik akhir antarmuka diwakili oleh satu atau lebih antarmuka jaringan elastis (ENIs) yang diberi alamat IP pribadi dari subnet di VPC Amazon Anda. Permintaan ke DynamoDB Streams melalui titik akhir antarmuka tetap berada di jaringan Amazon. Anda juga dapat mengakses titik akhir antarmuka di VPC Amazon Anda dari aplikasi lokal Direct Connect melalui AWS Virtual Private Network atau AWS (VPN). Untuk informasi selengkapnya tentang cara menghubungkan Anda AWS Virtual Private Network dengan jaringan lokal, lihat [https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) [https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html). 

Untuk informasi umum tentang titik akhir antarmuka, lihat [Antarmuka Amazon VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)AWS PrivateLink endpoint ().

**catatan**  
Hanya titik akhir antarmuka yang didukung untuk DynamoDB Streams. Titik akhir Gateway tidak didukung.

**Topics**
+ [Pertimbangan saat menggunakan AWS PrivateLink untuk Amazon DynamoDB Streams](#privatelink-streams-considerations)
+ [Membuat titik akhir Amazon VPC](#privatelink-streams-vpc-endpoint)
+ [Mengakses titik akhir antarmuka Amazon DynamoDB Streams](#privatelink-streams-accessing-ddb-interface-endpoints)
+ [Mengakses operasi API DynamoDB Streams dari titik akhir antarmuka DynamoDB Streams](#privatelink-streams-accessing-api-operations-from-interface-endpoints)
+ [AWS Contoh SDK](#privatelink-streams-aws-sdk-examples)
+ [Membuat kebijakan endpoint Amazon VPC untuk DynamoDB Streams](#privatelink-streams-creating-vpc-endpoint-policy)
+ [Menggunakan titik akhir DynamoDB dengan Akses Pribadi Konsol Manajemen AWS](#ddb-streams-endpoints-private-access)

## Pertimbangan saat menggunakan AWS PrivateLink untuk Amazon DynamoDB Streams
<a name="privatelink-streams-considerations"></a>

Pertimbangan Amazon VPC berlaku untuk Amazon AWS PrivateLink DynamoDB Streams. [Untuk informasi selengkapnya, lihat [pertimbangan dan AWS PrivateLink kuota titik akhir antarmuka](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html).](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html) Pembatasan berikut berlaku.

AWS PrivateLink untuk Amazon DynamoDB Streams tidak mendukung hal berikut: 
+ Keamanan Lapisan Pengangkutan (TLS) 1.1
+ Layanan Sistem Nama Domain Pribadi dan Hybrid (DNS)

**penting**  
Jangan membuat zona host pribadi untuk mengganti nama DNS titik akhir DynamoDB Streams untuk merutekan lalu lintas ke titik akhir antarmuka Anda. Konfigurasi DNS DynamoDB dapat berubah seiring waktu dan penggantian DNS khusus dapat menyebabkan permintaan secara tak terduga merutekan alamat IP publik alih-alih titik akhir antarmuka Anda.   
 Untuk mengakses DynamoDB Streams AWS PrivateLink melalui, konfigurasikan klien Anda untuk menggunakan URL endpoint Amazon VPC secara langsung (misalnya,). `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.region.vpce.amazonaws.com`

**catatan**  
Batas waktu konektivitas jaringan ke AWS PrivateLink titik akhir tidak berada dalam lingkup respons kesalahan DynamoDB Streams dan perlu ditangani dengan tepat oleh aplikasi Anda yang terhubung ke titik akhir. AWS PrivateLink 

## Membuat titik akhir Amazon VPC
<a name="privatelink-streams-vpc-endpoint"></a>

*Untuk membuat titik akhir antarmuka VPC Amazon, lihat Membuat titik akhir [VPC Amazon](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) di Panduan.AWS PrivateLink *

## Mengakses titik akhir antarmuka Amazon DynamoDB Streams
<a name="privatelink-streams-accessing-ddb-interface-endpoints"></a>

**Saat Anda membuat titik akhir antarmuka, DynamoDB menghasilkan dua jenis nama DNS DynamoDB Streams khusus titik akhir: Regional dan Zonal.** 
+ Nama DNS *Regional* mencakup ID titik akhir VPC Amazon yang unik, pengenal layanan, Wilayah AWS dan namanya. `vpce.amazonaws.com` Misalnya, untuk ID titik akhir VPC Amazon`vpce-1a2b3c4d`, nama DNS yang dihasilkan mungkin mirip dengan. `vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com`
+ Nama DNS *Zonal* mencakup Zona Ketersediaan—misalnya, `vpce-1a2b3c4d-5e6f-us-east-1a.streams.dynamodb.us-east-1.vpce.amazonaws.com`. Anda dapat menggunakan opsi ini jika arsitektur Anda mengisolasi Zona Ketersediaan. Contoh, Anda bisa menggunakannya untuk kontainer kesalahan atau untuk mengurangi biaya transfer data Regional.

## Mengakses operasi API DynamoDB Streams dari titik akhir antarmuka DynamoDB Streams
<a name="privatelink-streams-accessing-api-operations-from-interface-endpoints"></a>

Anda dapat menggunakan AWS CLI atau AWS SDKs untuk mengakses operasi API DynamoDB Streams melalui titik akhir antarmuka DynamoDB Streams.

### AWS CLI contoh
<a name="privatelink-streams-aws-cli-examples"></a>

Untuk mengakses DynamoDB Streams atau operasi API melalui titik akhir antarmuka DynamoDB Streams dalam perintah, gunakan parameter dan. AWS CLI `--region` `--endpoint-url`

**Contoh: Buat titik akhir VPC**

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name com.amazonaws.us-east-1.dynamodb-streams \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \
--vpc-endpoint-type Interface \
--security-group-ids client-sg-id
```

**Contoh: Memodifikasi titik akhir VPC**

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-endpoint-id \
--policy-document policy-document \ #example optional parameter
--add-security-group-ids security-group-ids \ #example optional parameter 
# any additional parameters needed, see Privatelink documentation for more details
```

**Contoh: Daftar aliran menggunakan URL endpoint**

Dalam contoh berikut, ganti Region `us-east-1` dan nama DNS dari `vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` ID endpoint VPC dengan informasi Anda sendiri.

```
aws dynamodbstreams --region us-east-1 —endpoint https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com list-streams
```

## AWS Contoh SDK
<a name="privatelink-streams-aws-sdk-examples"></a>

Untuk mengakses operasi API DynamoDB Streams Amazon melalui titik akhir antarmuka DynamoDB Streams saat menggunakan, perbarui ke versi terbaru. AWS SDKs SDKs Kemudian, konfigurasikan klien Anda untuk menggunakan URL endpoint untuk operasi DynamoDB Streams API melalui titik akhir antarmuka DynamoDB Streams.

------
#### [ SDK for Python (Boto3) ]

**Contoh: Gunakan URL endpoint untuk mengakses aliran DynamoDB**  
Dalam contoh berikut, ganti Wilayah `us-east-1` dan ID titik akhir VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` dengan informasi Anda sendiri.

```
ddb_streams_client = session.client(
service_name='dynamodbstreams',
region_name='us-east-1',
endpoint_url='https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com'
)
```

------
#### [ SDK for Java 1.x ]

**Contoh: Gunakan URL endpoint untuk mengakses aliran DynamoDB**  
Dalam contoh berikut, ganti Wilayah `us-east-1` dan ID titik akhir VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` dengan informasi Anda sendiri.

```
//client build with endpoint config  
final AmazonDynamoDBStreams dynamodbstreams = AmazonDynamoDBStreamsClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
```

------
#### [ SDK for Java 2.x ]

**Contoh: Gunakan URL endpoint untuk mengakses aliran DynamoDB**  
Dalam contoh berikut, ganti Wilayah `us-east-1` dan ID titik akhir VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` dengan informasi Anda sendiri.

```
Region region = Region.US_EAST_1;
dynamoDbStreamsClient = DynamoDbStreamsClient.builder().region(region)
.endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com"))
.build()
```

------

## Membuat kebijakan endpoint Amazon VPC untuk DynamoDB Streams
<a name="privatelink-streams-creating-vpc-endpoint-policy"></a>

Anda dapat melampirkan kebijakan endpoint ke endpoint Amazon VPC yang mengontrol akses ke DynamoDB Streams. Kebijakan titik akhir menentukan informasi berikut: 
+ Prinsip AWS Identity and Access Management (IAM) yang dapat melakukan tindakan 
+ Tindakan-tindakan yang dapat dilakukan 
+ Sumber daya yang padanya tindakan dapat dilakukan 

**Topics**
+ [Contoh: Membatasi akses ke aliran tertentu dari titik akhir VPC Amazon](#privatelink-streams-example-restrict-access-to-bucket)

### Contoh: Membatasi akses ke aliran tertentu dari titik akhir VPC Amazon
<a name="privatelink-streams-example-restrict-access-to-bucket"></a>

Anda dapat membuat kebijakan endpoint yang membatasi akses hanya ke DynamoDB Streams tertentu. Jenis kebijakan ini berguna jika Anda memiliki kebijakan lain Layanan AWS di Amazon VPC yang menggunakan DynamoDB Streams. Kebijakan aliran berikut membatasi akses hanya ke aliran yang `2025-02-20T11:22:33.444` dilampirkan`DOC-EXAMPLE-TABLE`. Untuk menggunakan kebijakan endpoint ini, ganti `DOC-EXAMPLE-TABLE` dengan nama tabel Anda dan `2025-02-20T11:22:33.444` dengan label stream.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Id": "Policy1216114807515",
  "Statement": [
    { "Sid": "Access-to-specific-stream-only",
      "Principal": "*",
      "Action": [
        "dynamodb:DescribeStream",
        "dynamodb:GetRecords"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:dynamodb:us-east-1:111122223333:table/table-name/stream/2025-02-20T11:22:33.444"]
    }
  ]
}
```

------

**catatan**  
Titik akhir Gateway tidak didukung di DynamoDB Streams.

## Menggunakan titik akhir DynamoDB dengan Akses Pribadi Konsol Manajemen AWS
<a name="ddb-streams-endpoints-private-access"></a>

[https://console.aws.amazon.com/dynamodb](https://console.aws.amazon.com/dynamodb)

Untuk mengonfigurasi DynamoDB agar dapat diakses Konsol Manajemen AWS di Private Access, Anda harus membuat dua titik akhir VPC berikut:
+ `com.amazonaws.<region>.dynamodb`
+ `com.amazonaws.<region>.dynamodb-streams`

Saat Anda membuat titik akhir VPC, navigasikan ke konsol Route53 dan buat zona host pribadi untuk DynamoDB menggunakan titik akhir regional. `dynamodb.us-east-1.amazonaws.com`

Buat dua catatan alias berikut di zona host pribadi:
+ `dynamodb.<region>.amazonaws.com`yang merutekan lalu lintas ke titik akhir VPC. `com.amazonaws.<region>.dynamodb`
+ `streams.dynamodb.<region>.amazonaws.com`yang merutekan lalu lintas ke titik akhir VPC. `com.amazonaws.<region>.dynamodb-streams`

# Menggunakan AWS PrivateLink untuk DynamoDB Accelerator (DAX)
<a name="dax-private-link"></a>

AWS PrivateLink untuk DynamoDB Accelerator (DAX) memungkinkan Anda untuk mengakses APIs manajemen DAX dengan aman `CreateCluster` seperti`DescribeClusters`,, `DeleteCluster` dan melalui alamat IP pribadi dalam virtual private cloud (VPC) Anda. Fitur ini memungkinkan Anda untuk mengakses layanan DAX secara pribadi dari aplikasi Anda tanpa mengekspos lalu lintas ke internet publik.

DAX PrivateLink mendukung dual-stack endpoint (`dax.{region}.api.aws`), memungkinkan keduanya dan konektivitas. IPv4 IPv6 Dengan AWS PrivateLink untuk DAX, pelanggan dapat mengakses layanan menggunakan nama DNS pribadi. Dukungan titik akhir dual-stack memastikan konektivitas transparan sambil menjaga privasi jaringan. Ini memungkinkan Anda mengakses DAX melalui internet publik dan titik akhir VPC tanpa membuat perubahan apa pun pada konfigurasi SDK Anda.

## Pertimbangan saat menggunakan AWS PrivateLink DynamoDB Accelerator (DAX)
<a name="dax-privatelink-considerations"></a>

Saat menerapkan AWS PrivateLink DynamoDB Accelerator (DAX), beberapa pertimbangan penting harus diperhitungkan.

Sebelum Anda menyiapkan titik akhir antarmuka untuk DAX, pertimbangkan hal berikut:
+ Titik akhir antarmuka DAX hanya mendukung akses ke manajemen DAX APIs dalam hal yang sama. Wilayah AWS Anda tidak dapat menggunakan titik akhir antarmuka untuk mengakses manajemen DAX APIs di Wilayah lain.
+ Untuk mengakses pengelolaan DAX Konsol Manajemen AWS secara pribadi, Anda mungkin perlu membuat titik akhir VPC tambahan untuk layanan seperti dan layanan terkait. `com.amazonaws.region.console`
+ Anda dikenakan biaya untuk membuat dan menggunakan titik akhir antarmuka ke DAX. Untuk informasi harga, lihat [Harga AWS PrivateLink](https://aws.amazon.com/vpc/pricing/).

## Bagaimana AWS PrivateLink bekerja dengan DAX
<a name="dax-privatelink-how-it-works"></a>

Saat Anda membuat titik akhir antarmuka untuk DAX:

1. AWS membuat antarmuka jaringan endpoint di setiap subnet yang Anda aktifkan untuk titik akhir antarmuka.

1. Ini adalah antarmuka jaringan yang dikelola pemohon yang berfungsi sebagai titik masuk untuk lalu lintas yang ditujukan untuk DAX.

1. Anda kemudian dapat mengakses DAX melalui alamat IP pribadi dalam VPC Anda.

1. Arsitektur ini memungkinkan Anda menggunakan grup keamanan VPC untuk mengelola akses ke titik akhir.

1. Aplikasi dapat mengakses DynamoDB dan DAX melalui titik akhir antarmuka masing-masing dalam VPC, sementara juga memungkinkan aplikasi lokal untuk terhubung melalui Direct Connect atau VPN.

1. Ini memberikan model konektivitas yang konsisten di kedua layanan, menyederhanakan arsitektur, dan meningkatkan keamanan dengan menjaga lalu lintas dalam AWS jaringan.

## Membuat Endpoint Antarmuka untuk DAX
<a name="dax-privatelink-creating-endpoints"></a>

Anda dapat membuat titik akhir antarmuka untuk terhubung ke DAX menggunakan Konsol Manajemen AWS, AWS SDK CloudFormation, atau API. AWS 

**Untuk membuat titik akhir antarmuka untuk DAX menggunakan konsol**

1. Arahkan ke konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Di panel navigasi, pilih **Titik Akhir**.

1. Pilih **Buat Titik Akhir**.

1. Untuk **kategori Layanan**, pilih **Layanan AWS**dan untuk **Nama Layanan**, cari dan pilih`com.amazonaws.region.dax`.

1. Untuk **VPC**, pilih VPC dari mana Anda ingin mengakses DAX dan untuk **Subnet, pilih subnet** tempat AWS akan membuat antarmuka jaringan titik akhir.

1. Untuk **grup Keamanan**, pilih atau buat grup keamanan untuk dikaitkan dengan antarmuka jaringan titik akhir.

1. Untuk **Kebijakan**, simpan **Akses Penuh** default atau sesuaikan sesuai kebutuhan.

1. Pilih **Aktifkan Nama DNS** untuk mengaktifkan DNS pribadi untuk titik akhir. Tetap aktifkan nama DNS pribadi untuk mencegah perubahan dalam konfigurasi SDK. Saat diaktifkan, aplikasi Anda dapat terus menggunakan nama DNS layanan standar (contoh:`dax.region.amazonaws.com`). AWS membuat zona host pribadi di VPC Anda yang menyelesaikan nama ini ke alamat IP pribadi titik akhir Anda.
**catatan**  
Gunakan nama DNS Regional jika diperlukan. Menggunakan nama DNS zonal tidak disarankan. Juga, pilih subnet dari 3 atau lebih AZs untuk memastikan ketersediaan maksimum melalui PrivateLink.

1. Pilih **Buat titik akhir**.

**Untuk membuat titik akhir antarmuka untuk DAX menggunakan AWS CLI**  
Gunakan `create-vpc-endpoint` perintah dengan `vpc-endpoint-type` parameter diatur ke `Interface` dan `service-name` parameter diatur ke`com.amazonaws.region.dax`.

```
aws ec2 create-vpc-endpoint \
    --vpc-id vpc-ec43eb89 \
    --vpc-endpoint-type Interface \
    --service-name com.amazonaws.us-east-1.dax \
    --subnet-ids subnet-abcd1234 subnet-1a2b3c4d \
    --security-group-ids sg-1a2b3c4d \
    --private-dns-enabled
```

## Sumber daya tambahan
<a name="dax-privatelink-resources"></a>

Untuk informasi selengkapnya tentang AWS PrivateLink dan titik akhir VPC, lihat sumber daya berikut:
+ [AWS PrivateLink untuk DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/privatelink-interface-endpoints.html)
+ [AWS PrivateLink untuk DynamoDB Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/privatelink-streams.html)
+ [Hubungkan VPC Anda ke layanan menggunakan AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html)
+ [Sederhanakan konektivitas pribadi ke DynamoDB dengan AWS PrivateLink](https://aws.amazon.com/blogs//database/simplify-private-connectivity-to-amazon-dynamodb-with-aws-privatelink)
+ [AWS PrivateLink Whitepaper](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-privatelink.html)

# Analisis konfigurasi dan kerentanan di Amazon DynamoDB
<a name="configuration-vulnerability"></a>

AWS menangani tugas-tugas keamanan dasar seperti sistem operasi tamu (OS) dan patching database, konfigurasi firewall, dan pemulihan bencana. Prosedur ini telah ditinjau dan disertifikasi oleh pihak ketiga yang sesuai. Untuk detail selengkapnya, lihat sumber daya berikut:
+ [Validasi kepatuhan untuk Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Compliance.html)
+ [Model tanggung jawab bersama](https://aws.amazon.com/compliance/shared-responsibility-model/)
+ [Amazon Web Services: Gambaran umum proses keamanan](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf)(laporan resmi)

Praktik terbaik keamanan berikut ini juga membahas analisis konfigurasi dan kerentanan di Amazon DynamoDB:
+ [Memantau kepatuhan DynamoDB Aturan AWS Config](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices-security-detective.html#rules)
+ [Memantau konfigurasi DynamoDB dengan AWS Config](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices-security-detective.html#config)

# Praktik Terbaik Keamanan untuk Amazon DynamoDB
<a name="best-practices-security"></a>

Amazon DynamoDB menyediakan sejumlah fitur keamanan untuk dipertimbangkan ketika Anda mengembangkan dan menerapkan kebijakan keamanan Anda sendiri. Praktik terbaik berikut adalah pedoman umum dan tidak mewakili solusi keamanan yang lengkap. Karena praktik terbaik ini mungkin tidak sesuai atau tidak memadai untuk lingkungan Anda, perlakukan itu sebagai pertimbangan yang bermanfaat, bukan sebagai resep.

**Topics**
+ [Praktik terbaik keamanan pencegahan di DynamoDB](best-practices-security-preventative.md)
+ [Praktik terbaik keamanan detektif DynamoDB](best-practices-security-detective.md)

# Praktik terbaik keamanan pencegahan di DynamoDB
<a name="best-practices-security-preventative"></a>

Praktik terbaik berikut dapat membantu Anda mengantisipasi dan mencegah insiden keamanan di Amazon DynamoDB.

**Enkripsi saat diam**  
DynamoDB mengenkripsi semua data pengguna saat diam yang disimpan dalam tabel, indeks, aliran, dan cadangan menggunakan kunci enkripsi yang disimpan dalam [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/). Hal ini memberi lapisan perlindungan data tambahan dengan mengamankan data Anda dari akses yang tidak sah ke penyimpanan dasar.  
Anda dapat menentukan apakah DynamoDB harus menggunakan Kunci milik AWS (tipe enkripsi default), atau kunci Kunci yang dikelola AWS yang dikelola pelanggan untuk mengenkripsi data pengguna. Untuk informasi selengkapnya, lihat [Enkripsi Amazon DynamoDB saat Diam](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EncryptionAtRest.html).

**Menggunakan peran IAM untuk mengautentikasi akses ke DynamoDB**  
Untuk pengguna, aplikasi, dan AWS layanan lain untuk mengakses DynamoDB, mereka harus menyertakan kredensi yang AWS valid dalam permintaan API mereka. AWS Anda tidak boleh menyimpan AWS kredensil secara langsung di aplikasi atau instans EC2. Ini adalah kredensial jangka panjang yang tidak dirotasi secara otomatis, dan karenanya dapat menimbulkan dampak bisnis yang signifikan jika dibobol. Peran IAM memungkinkan Anda memperoleh kunci akses sementara yang dapat digunakan untuk mengakses AWS layanan dan sumber daya.  
Untuk informasi selengkapnya, lihat [Manajemen Identitas dan Akses untuk Amazon DynamoDB](security-iam.md).

**Menggunakan kebijakan IAM untuk otorisasi dasar DynamoDB**  
Saat memberikan izin, Anda memutuskan siapa yang mendapatkannya, DynamoDB mana APIs mereka mendapatkan izin, dan tindakan spesifik yang ingin Anda izinkan pada sumber daya tersebut. Menerapkan akses hak akses paling rendah adalah hal mendasar dalam mengurangi risiko keamanan dan dampak yang dapat disebabkan oleh kesalahan atau niat jahat.  
Memberikan kebijakan izin kepada identitas IAM (yaitu, pengguna, grup, dan peran) dan dengan demikian memberikan izin untuk melakukan operasi pada sumber daya DynamoDB.  
Anda dapat melakukan hal ini dengan cara berikut:  
+ [AWS Kebijakan terkelola (telah ditentukan)](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html#access-policy-examples-aws-managed)
+ [Kebijakan yang dikelola pelanggan](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html#access-policy-examples-for-sdk-cli)

**Menggunakan ketentuan kebijakan IAM untuk kontrol akses ketat**  
Ketika memberikan izin di DynamoDB, Anda dapat menetapkan syarat yang menentukan bagaimana kebijakan izin berlaku. Menerapkan akses hak akses paling rendah adalah hal mendasar dalam mengurangi risiko keamanan dan dampak yang dapat disebabkan oleh kesalahan atau niat jahat.  
Anda dapat menetapkan syarat saat memberikan izin menggunakan kebijakan IAM. Misalnya, Anda dapat melakukan hal berikut:  
+ Memberi izin kepada pengguna akan akses hanya-baca pada item dan atribut tertentu dalam tabel atau indeks sekunder.
+ Memberi izin kepada pengguna akan akses hanya-tulis pada atribut tertentu dalam tabel, berdasarkan identitas pengguna tersebut.
 Untuk informasi selengkapnya, lihat [Menggunakan Syarat Kebijakan IAM untuk Kontrol Akses Ketat](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html).

**Menggunakan kebijakan dan titik akhir VPC untuk mengakses DynamoDB**  
Jika Anda hanya memerlukan akses ke DynamoDB dari dalam cloud privat virtual (VPC), Anda harus menggunakan titik akhir VPC untuk membatasi akses hanya dari VPC yang diperlukan. Melakukan hal ini akan mencegah lalu lintas melintasi internet terbuka dan tunduk pada lingkungan tersebut.  
Menggunakan titik akhir VPC untuk DynamoDB akan memungkinkan Anda untuk mengontrol dan membatasi akses menggunakan hal berikut:  
+ Kebijakan titik akhir VPC – Kebijakan ini diterapkan pada titik akhir VPC DynamoDB. Kebijakan tersebut memungkinkan Anda untuk mengontrol dan membatasi akses API ke tabel DynamoDB.
+ Kebijakan IAM – Dengan menggunakan syarat `aws:sourceVpce` pada kebijakan yang diberikan kepada pengguna, grup, atau peran, Anda dapat memberlakukan bahwa semua akses ke tabel DynamoDB adalah melalui titik akhir VPC tertentu.
 Untuk informasi selengkapnya, lihat [Titik Akhir untuk Amazon DynamoDB](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-ddb.html).

**Pertimbangkan enkripsi di sisi klien**  
Kami menyarankan Anda merencanakan strategi enkripsi Anda sebelum menerapkan tabel Anda di DynamoDB. Jika Anda menyimpan data sensitif atau rahasia di DynamoDB, pertimbangkan untuk menyertakan enkripsi di sisi klien dalam paket Anda. Dengan cara ini, Anda dapat mengenkripsi data sedekat mungkin dengan asalnya, dan memastikan perlindungannya sepanjang siklus hidupnya. Mengenkripsi data bergerak dan data diam Anda yang sensitif membantu memastikan bahwa data plaintext Anda tidak tersedia untuk pihak ketiga mana pun.   
 [AWS Database Encryption SDK untuk DynamoDB](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/what-is-ddb-encrypt.html) adalah pustaka perangkat lunak yang membantu Anda melindungi data tabel Anda sebelum mengirimkannya ke DynamoDB. Pustaka ini mengenkripsi, menandatangani, memverifikasi, dan mendekripsi item tabel DynamoDB Anda. Anda mengontrol atribut mana yang dienkripsi dan ditandatangani.

**Pertimbangan Utama Utama**  
Jangan gunakan nama sensitif atau data plaintext sensitif di [Kunci Utama](HowItWorks.Partitions.md) untuk tabel dan Indeks Sekunder Global. Nama kunci akan muncul dalam definisi tabel Anda. Misalnya, nama Kunci Utama dapat diakses oleh siapa saja yang memiliki izin untuk menelepon [DescribeTable](WorkingWithTables.Basics.md#WorkingWithTables.Basics.DescribeTable). Nilai kunci dapat muncul di log Anda [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)dan lainnya. Selain itu, DynamoDB menggunakan nilai-nilai kunci untuk mendistribusikan data dan permintaan rute AWS dan administrator dapat mengamati nilai-nilai untuk menjaga kesehatan layanan.  
Jika Anda perlu menggunakan data sensitif dalam tabel atau nilai kunci GSI, sebaiknya gunakan enkripsi end-to-end klien. Ini memungkinkan Anda untuk melakukan referensi nilai kunci ke data Anda sambil memastikan bahwa itu tidak pernah muncul tidak terenkripsi di log terkait DynamoDB Anda. Salah satu cara untuk mencapai ini adalah dengan menggunakan [AWS Database Encryption SDK untuk DynamoDB, tetapi itu tidak](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/client-server-side.html) diperlukan. Jika Anda menggunakan solusi Anda sendiri, kami harus selalu menggunakan algoritma enkripsi yang cukup aman. Anda tidak boleh menggunakan opsi non-kriptografi seperti hash, karena mereka tidak dianggap cukup aman dalam kebanyakan situasi.  
Jika nama kunci Primary Key Anda sensitif, sebaiknya gunakan ``pk`` dan ``sk`` sebagai gantinya. Ini adalah praktik terbaik umum yang membuat desain Partition Key Anda fleksibel.   
Selalu konsultasikan dengan pakar keamanan atau tim AWS akun Anda jika Anda khawatir tentang pilihan yang tepat. 

# Praktik terbaik keamanan detektif DynamoDB
<a name="best-practices-security-detective"></a>

Praktik terbaik berikut untuk Amazon DynamoDB dapat membantu mendeteksi potensi kelemahan dan insiden keamanan.

**Gunakan AWS CloudTrail untuk memantau penggunaan kunci KMS AWS terkelola**  
Jika Anda menggunakan enkripsi [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)for saat istirahat, penggunaan kunci ini masuk AWS CloudTrail. CloudTrail memberikan visibilitas ke aktivitas pengguna dengan merekam tindakan yang diambil pada akun Anda. CloudTrail mencatat informasi penting tentang setiap tindakan, termasuk siapa yang membuat permintaan, layanan yang digunakan, tindakan yang dilakukan, parameter untuk tindakan, dan elemen respons yang dikembalikan oleh AWS layanan. Informasi ini membantu Anda melacak perubahan yang dibuat pada AWS sumber daya Anda dan memecahkan masalah operasional. CloudTrail membuatnya lebih mudah untuk memastikan kepatuhan terhadap kebijakan internal dan standar peraturan.  
Anda dapat menggunakan CloudTrail untuk mengaudit penggunaan kunci. CloudTrail membuat file log yang berisi riwayat panggilan AWS API dan peristiwa terkait untuk akun Anda. File log ini mencakup semua permintaan AWS KMS API yang dibuat menggunakan Konsol Manajemen AWS AWS SDKs,, dan alat baris perintah, selain yang dibuat melalui AWS layanan terintegrasi. Anda dapat menggunakan file log ini untuk mendapatkan informasi tentang waktu penggunaan kunci KMS, operasi yang diminta, identitas pemohon, alamat IP asal permintaan, dan seterusnya. Untuk informasi selengkapnya, lihat [Pencatatan Panggilan API AWS KMS dengan AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html) dan [Panduan Pengguna AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

**Memantau operasi DynamoDB menggunakan CloudTrail**  
CloudTrail dapat memantau peristiwa bidang kontrol dan peristiwa bidang data. Operasi bidang kontrol memungkinkan Anda membuat dan mengelola tabel DynamoDB. Operasi ini juga memungkinkan Anda bekerja dengan indeks, aliran, dan objek lain yang tergantung pada tabel. Operasi bidang data memungkinkan Anda membuat, membaca, memperbarui, dan menghapus tindakan (juga disebut *CRUD*) pada data dalam tabel. Beberapa operasi bidang data juga memungkinkan Anda membaca data dari indeks sekunder. Untuk mengaktifkan pencatatan peristiwa bidang data di CloudTrail, Anda harus mengaktifkan pencatatan aktivitas API bidang data CloudTrail. Lihat [Pencatatan log peristiwa data untuk jejak](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) untuk informasi selengkapnya.  
Ketika aktivitas terjadi di DynamoDB, aktivitas tersebut direkam dalam CloudTrail suatu peristiwa bersama dengan peristiwa layanan AWS lainnya dalam riwayat peristiwa. Untuk informasi selengkapnya, lihat [Pencatatan Operasi DynamoDB Menggunakan AWS CloudTrail](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/logging-using-cloudtrail.html). Anda dapat melihat, mencari, dan mengunduh acara terbaru di AWS akun Anda. Untuk informasi selengkapnya, lihat [Melihat CloudTrail Acara dengan Riwayat Acara](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html) di *Panduan AWS CloudTrail Pengguna*.  
[Untuk catatan peristiwa yang sedang berlangsung di AWS akun Anda, termasuk acara untuk DynamoDB, buat jejak.](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) Jejak memungkinkan CloudTrail untuk mengirimkan file log ke bucket Amazon Simple Storage Service (Amazon S3). Secara default, saat Anda membuat jejak di konsol, jejak tersebut berlaku untuk semua AWS Wilayah. Jejak mencatat peristiwa dari semua Wilayah di partisi AWS dan mengirimkan file log ke bucket S3 yang Anda tentukan. Selain itu, Anda dapat mengonfigurasi AWS layanan lain untuk menganalisis lebih lanjut dan menindaklanjuti data peristiwa yang dikumpulkan dalam CloudTrail log.

**Menggunakan DynamoDB Streams untuk memantau operasi bidang data**  
DynamoDB terintegrasi AWS Lambda dengan sehingga Anda dapat membuat pemicu—potongan kode yang secara otomatis merespons peristiwa di DynamoDB Streams. Dengan pemicu, Anda dapat membangun aplikasi yang bereaksi terhadap modifikasi data di tabel DynamoDB.  
Jika Anda mengaktifkan DynamoDB Streams pada tabel, Anda dapat mengaitkan aliran Amazon Resource Name (ARN) dengan fungsi Lambda yang Anda tulis. Segera setelah item dalam tabel diubah, catatan baru muncul di aliran tabel. AWS Lambda polling aliran dan memanggil fungsi Lambda Anda secara serempak saat mendeteksi catatan aliran baru. Fungsi Lambda dapat melakukan tindakan apa pun yang Anda tentukan, seperti mengirim notifikasi atau memulai alur kerja.  
Sebagai contoh, lihat [Tutorial: Menggunakan AWS Lambda Dengan Amazon DynamoDB Streams](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb-example.html). Contoh ini menerima input peristiwa DynamoDB, memproses pesan yang dikandungnya, dan menulis beberapa data peristiwa yang masuk ke Amazon Logs. CloudWatch 

**Memantau konfigurasi DynamoDB dengan AWS Config**  
Anda dapat terus memantau dan merekam perubahan konfigurasi pada sumber daya AWS Anda menggunakan [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html). Anda juga dapat menggunakan AWS Config inventaris AWS sumber daya Anda. Ketika terdeteksi perubahan dari keadaan sebelumnya, pemberitahuan Amazon Simple Notiﬁcation Service (Amazon SNS) dapat dikirimkan untuk Anda guna meninjau dan mengambil tindakan. Ikuti panduan dalam [Menyiapkan AWS Config dengan Konsol](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html), memastikan bahwa jenis sumber daya DynamoDB disertakan.  
Anda dapat mengonfigurasi AWS Config untuk mengalirkan perubahan konfigurasi dan pemberitahuan ke topik Amazon SNS. Misalnya, ketika sumber daya diperbarui, Anda bisa mendapatkan pemberitahuan yang dikirim ke email Anda, sehingga Anda dapat melihat perubahan tersebut. Anda juga dapat diberi tahu saat AWS Config mengevaluasi aturan kustom atau terkelola terhadap sumber daya Anda.  
Sebagai contoh, lihat [Pemberitahuan yang AWS Config Mengirim ke topik Amazon SNS di Panduan AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/notifications-for-AWS-Config.html) *Pengembang*.

**Pantau kepatuhan DynamoDB dengan aturan AWS Config **  
AWS Config terus melacak perubahan konfigurasi yang terjadi di antara sumber daya Anda. Hal itu memeriksa apakah perubahan ini melanggar salah satu syarat dalam aturan Anda. Jika sumber daya melanggar aturan, AWS Config tandai sumber daya dan aturan sebagai tidak sesuai.  
Dengan menggunakan AWS Config untuk mengevaluasi konfigurasi sumber daya Anda, Anda dapat menilai seberapa baik konfigurasi sumber daya Anda mematuhi praktik internal, pedoman industri, dan peraturan. AWS Config menyediakan [aturan AWS terkelola](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html), yang merupakan aturan yang telah ditentukan sebelumnya dan dapat disesuaikan yang AWS Config digunakan untuk mengevaluasi apakah AWS sumber daya Anda mematuhi praktik terbaik umum.

**Tandai sumber daya DynamoDB Anda untuk identifikasi dan otomatisasi**  
Anda dapat menetapkan metadata ke AWS sumber daya Anda dalam bentuk tag. Setiap tanda adalah label sederhana yang terdiri dari kunci yang ditetapkan pelanggan dan nilai opsional yang memudahkan untuk mengelola, mencari, dan memfilter sumber daya.   
Penandaan memungkinkan implementasi kontrol berkelompok. Meskipun tidak ada jenis tanda yang melekat, tanda memungkinkan Anda untuk mengelompokkan sumber daya berdasarkan tujuan, pemilik, lingkungan, atau kriteria lainnya. Berikut ini beberapa contohnya:  
+ Keamanan – Digunakan untuk menentukan persyaratan seperti enkripsi.
+ Kerahasiaan – Sebuah pengidentifikasi untuk dukungan sumber daya tingkat kerahasiaan data tertentu.
+ Lingkungan – Digunakan untuk membedakan antara pengembangan, pengujian, dan infrastruktur produksi.
Untuk informasi selengkapnya, lihat [Strategi Penandaan AWS](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) dan [Penandaan untuk DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html).

**Pantau penggunaan Amazon DynamoDB karena berkaitan dengan praktik terbaik keamanan dengan menggunakan. AWS Security Hub CSPM**  
Security Hub CSPM menggunakan kontrol keamanan untuk mengevaluasi konfigurasi sumber daya dan standar keamanan untuk membantu Anda mematuhi berbagai kerangka kerja kepatuhan.  
[https://docs.aws.amazon.com/securityhub/latest/userguide/dynamodb-controls.html](https://docs.aws.amazon.com/securityhub/latest/userguide/dynamodb-controls.html)