

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

# Contoh kebijakan berbasis sumber daya 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/*"
      ]
    }
  ]
}
```

------