

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

# Kontrol akses ke REST API dengan kebijakan sumber daya API Gateway
<a name="apigateway-resource-policies"></a>

Kebijakan *sumber daya* Amazon API Gateway adalah dokumen kebijakan JSON yang Anda lampirkan ke API untuk mengontrol apakah prinsipal tertentu (biasanya peran atau grup IAM) dapat memanggil API. Anda dapat menggunakan kebijakan sumber daya API Gateway untuk memungkinkan API Anda dipanggil dengan aman oleh:
+ Pengguna dari AWS akun tertentu.
+ Rentang alamat IP sumber tertentu atau blok CIDR.
+ Cloud pribadi virtual tertentu (VPCs) atau titik akhir VPC (di akun apa pun).

Anda dapat melampirkan kebijakan sumber daya untuk semua jenis titik akhir API di API Gateway dengan menggunakan, AWS CLI Konsol Manajemen AWS, atau. AWS SDKs Untuk [pribadi APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html), Anda dapat menggunakan kebijakan sumber daya bersama dengan kebijakan titik akhir VPC untuk mengontrol prinsipal mana yang memiliki akses ke sumber daya dan tindakan mana. Untuk informasi selengkapnya, lihat [Menggunakan kebijakan titik akhir VPC secara pribadi APIs di API Gateway](apigateway-vpc-endpoint-policies.md).

 Kebijakan sumber daya API Gateway berbeda dari kebijakan berbasis identitas IAM. Kebijakan berbasis identitas IAM dilampirkan pada pengguna, grup, atau peran IAM dan menentukan tindakan apa yang dapat dilakukan identitas tersebut pada sumber daya mana. Kebijakan sumber daya API Gateway dilampirkan ke sumber daya. Anda dapat menggunakan kebijakan sumber daya API Gateway bersama dengan kebijakan IAM. Untuk informasi lebih lanjut, lihat [Kebijakan Berbasis Identitas dan Kebijakan Berbasis Sumber Daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html).

**Topics**
+ [Mengakses ikhtisar bahasa kebijakan untuk Amazon API Gateway](apigateway-control-access-policy-language-overview.md)
+ [Bagaimana kebijakan sumber daya API Gateway memengaruhi alur kerja otorisasi](apigateway-authorization-flow.md)
+ [Contoh kebijakan sumber daya API Gateway](apigateway-resource-policies-examples.md)
+ [Membuat dan melampirkan kebijakan sumber daya API Gateway ke API](apigateway-resource-policies-create-attach.md)
+ [AWS kunci kondisi yang dapat digunakan dalam kebijakan sumber daya API Gateway](apigateway-resource-policies-aws-condition-keys.md)

# Mengakses ikhtisar bahasa kebijakan untuk Amazon API Gateway
<a name="apigateway-control-access-policy-language-overview"></a>

Halaman ini menjelaskan elemen dasar yang digunakan dalam kebijakan sumber daya Amazon API Gateway.

Kebijakan sumber daya ditentukan menggunakan sintaks yang sama dengan kebijakan IAM. Untuk informasi bahasa kebijakan selengkapnya, lihat [Gambaran Umum Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) dan [Referensi AWS Identity and Access Management Kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) di *Panduan Pengguna IAM*.

Untuk informasi tentang cara AWS layanan memutuskan apakah permintaan yang diberikan harus diizinkan atau ditolak, lihat [Menentukan Apakah Permintaan Diizinkan atau Ditolak](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

## Elemen umum dalam kebijakan akses
<a name="apigateway-common-elements-in-an-access-policy"></a>

Dalam arti yang paling mendasar, kebijakan sumber daya berisi elemen-elemen berikut:
+ **Sumber daya** - APIs adalah sumber daya Amazon API Gateway yang dapat Anda izinkan atau tolak izinnya. Dalam sebuah kebijakan, Anda menggunakan Nama Sumber Daya Amazon (ARN) untuk mengidentifikasi sumber daya. Anda juga dapat menggunakan sintaks singkat, yang API Gateway secara otomatis diperluas ke ARN penuh saat Anda menyimpan kebijakan sumber daya. Untuk mempelajari selengkapnya, lihat [Contoh kebijakan sumber daya API Gateway](apigateway-resource-policies-examples.md).

  Untuk format `Resource` elemen lengkap, lihat[Format sumber daya izin untuk menjalankan API di API Gateway](api-gateway-control-access-using-iam-policies-to-invoke-api.md#api-gateway-iam-policy-resource-format-for-executing-api).
+ **Tindakan** - Untuk setiap sumber daya, Amazon API Gateway mendukung serangkaian operasi. Anda mengidentifikasi operasi sumber daya yang Anda izinkan (atau tolak) dengan menggunakan kata kunci tindakan.

  Misalnya, `execute-api:Invoke` izin akan memungkinkan izin pengguna untuk memanggil API atas permintaan klien.

  Untuk format `Action` elemen, lihat[Format tindakan izin untuk menjalankan API di API Gateway](api-gateway-control-access-using-iam-policies-to-invoke-api.md#api-gateway-iam-policy-action-format-for-executing-api).
+ **Efek** — Apa efeknya ketika pengguna meminta tindakan tertentu—ini bisa berupa salah satu atau. `Allow` `Deny` Anda juga dapat secara eksplisit menolak akses ke sumber daya, yang mungkin Anda lakukan untuk memastikan bahwa pengguna tidak dapat mengaksesnya, bahkan jika kebijakan lain memberikan akses. 
**catatan**  
“Penyangkalan implisit” adalah hal yang sama dengan “tolak secara default”.  
“Penyangkalan implisit” berbeda dari “penolakan eksplisit”. Untuk informasi selengkapnya, lihat [Perbedaan Antara Menyangkal Secara Default dan Penolakan Eksplisit](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#AccessPolicyLanguage_Interplay).
+ **Principal** — Akun atau pengguna mengizinkan akses ke tindakan dan sumber daya dalam pernyataan. Dalam kebijakan sumber daya, prinsipal adalah pengguna atau akun yang menerima izin ini.

Contoh kebijakan sumber daya berikut menunjukkan elemen kebijakan umum sebelumnya. Kebijakan memberikan akses ke API di bawah yang ditentukan *account-id* dalam yang ditentukan *region* untuk setiap pengguna yang alamat IP sumbernya ada di blok *123.4.5.6/24* alamat. Kebijakan menolak semua akses ke API jika IP sumber pengguna tidak berada dalam jangkauan.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:111111111111:*"
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:111111111111:*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "123.4.5.6/24"
                }
            }
        }
    ]
}
```

------

# Bagaimana kebijakan sumber daya API Gateway memengaruhi alur kerja otorisasi
<a name="apigateway-authorization-flow"></a>

Saat API Gateway mengevaluasi kebijakan sumber daya yang dilampirkan ke API Anda, hasilnya dipengaruhi oleh jenis autentikasi yang telah Anda tetapkan untuk API, seperti yang diilustrasikan dalam diagram alur di bagian berikut.

**Topics**
+ [Kebijakan sumber daya API Gateway saja](#apigateway-authorization-flow-resource-policy-only)
+ [Lambda otorisasi dan kebijakan sumber daya](#apigateway-authorization-flow-lambda)
+ [Autentikasi IAM dan kebijakan sumber daya](#apigateway-authorization-flow-iam)
+ [Autentikasi Amazon Cognito dan kebijakan sumber daya](#apigateway-authorization-flow-cognito)
+ [Tabel hasil evaluasi kebijakan](#apigateway-resource-policies-iam-policies-interaction)

## Kebijakan sumber daya API Gateway saja
<a name="apigateway-authorization-flow-resource-policy-only"></a>

Dalam alur kerja ini, kebijakan sumber daya API Gateway dilampirkan ke API, tetapi tidak ada jenis otentikasi yang ditentukan untuk API. Evaluasi kebijakan melibatkan pencarian izin eksplisit berdasarkan kriteria masuk penelepon. Penolakan implisit atau penolakan eksplisit apa pun menghasilkan penolakan penelepon.

![\[Alur otorisasi kebijakan sumber daya saja.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/apigateway-auth-resource-policy-only.png)


Berikut ini adalah contoh kebijakan sumber daya semacam itu.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:111111111111:api-id/",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ]
                }
            }
        }
    ]
}
```

------

## Lambda otorisasi dan kebijakan sumber daya
<a name="apigateway-authorization-flow-lambda"></a>

Dalam alur kerja ini, otorisasi Lambda dikonfigurasi untuk API selain kebijakan sumber daya. Kebijakan sumber daya dievaluasi dalam dua fase. Sebelum memanggil otorisasi Lambda, API Gateway terlebih dahulu mengevaluasi kebijakan dan memeriksa setiap penolakan eksplisit. Jika ditemukan, penelepon ditolak aksesnya segera. Jika tidak, otorisasi Lambda dipanggil, dan mengembalikan [dokumen kebijakan](api-gateway-lambda-authorizer-output.md), yang dievaluasi bersama dengan kebijakan sumber daya. Jika otorisasi Anda menggunakan caching, API Gateway mungkin menampilkan dokumen kebijakan yang di-cache. Hasilnya ditentukan berdasarkan [Tabel A](#apigateway-resource-policies-iam-policies-interaction).

Contoh kebijakan sumber daya berikut mengizinkan panggilan hanya dari titik akhir VPC yang ID titik akhir VPC-nya. `vpce-1a2b3c4d` Selama evaluasi “pra-auth”, hanya panggilan yang berasal dari titik akhir VPC yang ditunjukkan dalam contoh yang diizinkan untuk bergerak maju dan mengevaluasi otorisasi Lambda. Semua panggilan yang tersisa diblokir. Alur kerja otorisasi ini sama jika Anda menggunakan nama domain khusus untuk API pribadi.

![\[Alur otorisasi untuk kebijakan sumber daya dan otorisasi Lambda.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/apigateway-auth-lambda-resource-policy.png)


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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "arn:aws:execute-api:us-east-1:111111111111:api-id/"
            ],
            "Condition" : {
                "StringNotEquals": {
                    "aws:SourceVpce": "vpce-1a2b3c4d"
                }
            }
        }
    ]
}
```

------

## Autentikasi IAM dan kebijakan sumber daya
<a name="apigateway-authorization-flow-iam"></a>

Dalam alur kerja ini, Anda mengonfigurasi autentikasi IAM untuk API selain kebijakan sumber daya. Setelah Anda mengautentikasi pengguna dengan layanan IAM, API mengevaluasi kebijakan yang dilampirkan pada pengguna dan kebijakan sumber daya. Hasilnya bervariasi berdasarkan apakah pemanggil berada di tempat yang sama Akun AWS atau terpisah Akun AWS, dari pemilik API. 

Jika pemanggil dan pemilik API berasal dari akun terpisah, kebijakan IAM dan kebijakan sumber daya secara eksplisit mengizinkan pemanggil untuk melanjutkan. Untuk informasi lebih lanjut, lihat [Tabel B](#apigateway-resource-policies-iam-policies-interaction). 

Namun, jika pemanggil dan pemilik API sama Akun AWS, maka kebijakan pengguna IAM atau kebijakan sumber daya harus secara eksplisit mengizinkan pemanggil untuk melanjutkan. Untuk informasi lebih lanjut, lihat [Tabel A](#apigateway-resource-policies-iam-policies-interaction).

![\[Alur otorisasi untuk kebijakan sumber daya dan otentikasi IAM.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/apigateway-auth-iam-resource-policy.png)


Berikut ini adalah contoh kebijakan sumber daya lintas akun. Dengan asumsi kebijakan IAM berisi efek allow, kebijakan sumber daya ini hanya mengizinkan panggilan dari VPC yang ID VPCnya. `vpc-2f09a348` Untuk informasi lebih lanjut, lihat [Tabel B](#apigateway-resource-policies-iam-policies-interaction).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "arn:aws:execute-api:us-east-1:111111111111:api-id/"
            ],
            "Condition" : {
                "StringEquals": {
                    "aws:SourceVpc": "vpc-2f09a348"
                    }
            }
        }
    ]
}
```

------

## Autentikasi Amazon Cognito dan kebijakan sumber daya
<a name="apigateway-authorization-flow-cognito"></a>

Dalam alur kerja ini, kumpulan [pengguna Amazon Cognito](apigateway-integrate-with-cognito.md) dikonfigurasi untuk API selain kebijakan sumber daya. API Gateway pertama kali mencoba untuk mengautentikasi pemanggil melalui Amazon Cognito. Ini biasanya dilakukan melalui [token JWT](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) yang disediakan oleh penelepon. Jika otentikasi berhasil, kebijakan sumber daya dievaluasi secara independen, dan izin eksplisit diperlukan. Penyangkalan atau “tidak mengizinkan atau menyangkal” menghasilkan penyangkalan. Berikut ini adalah contoh kebijakan sumber daya yang dapat digunakan bersama dengan kumpulan pengguna Amazon Cognito.

![\[Alur otorisasi untuk kebijakan sumber daya dan otorisasi Amazon Cognito.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/apigateway-auth-cognito-resource-policy.png)


Berikut ini adalah contoh kebijakan sumber daya yang mengizinkan panggilan hanya dari sumber tertentu IPs, dengan asumsi bahwa token otentikasi Amazon Cognito berisi izin. Untuk informasi lebih lanjut, lihat [Tabel B](#apigateway-resource-policies-iam-policies-interaction).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:111111111111:api-id/",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ]
                }
            }
        }
    ]
}
```

------

## Tabel hasil evaluasi kebijakan
<a name="apigateway-resource-policies-iam-policies-interaction"></a>

Tabel A mencantumkan perilaku yang dihasilkan saat akses ke API Gateway API dikendalikan oleh kebijakan IAM atau otorisasi Lambda dan kebijakan sumber daya API Gateway, keduanya sama. Akun AWS


| **Kebijakan IAM (atau otorisasi Lambda)** | **Kebijakan sumber daya API Gateway** | **Perilaku yang dihasilkan** | 
| --- | --- | --- | 
| Izinkan | Izinkan | Izinkan | 
| Izinkan | Tidak Memungkinkan atau Menyangkal | Izinkan | 
| Izinkan | Menyangkal | Penolakan jelas | 
| Tidak Memungkinkan atau Menyangkal | Izinkan | Izinkan | 
| Tidak Memungkinkan atau Menyangkal | Tidak Memungkinkan atau Menyangkal | Penyangkalan Implisit | 
| Tidak Memungkinkan atau Menyangkal | Menyangkal | Penolakan jelas | 
| Menyangkal | Izinkan | Penolakan jelas | 
| Menyangkal | Tidak Memungkinkan atau Menyangkal | Penolakan jelas | 
| Menyangkal | Menyangkal | Penolakan jelas | 

Tabel B mencantumkan perilaku yang dihasilkan saat akses ke API Gateway API dikendalikan oleh kebijakan IAM atau otorisasi kumpulan pengguna Amazon Cognito dan kebijakan sumber daya API Gateway, yang berbeda. Akun AWS Jika salah satu diam (tidak mengizinkan atau menolak), akses lintas akun ditolak. Ini karena akses lintas akun mengharuskan kebijakan sumber daya dan kebijakan IAM atau otorisasi kumpulan pengguna Amazon Cognito secara eksplisit memberikan akses.


| **Kebijakan IAM (atau otorisasi kumpulan pengguna Amazon Cognito)** | **Kebijakan sumber daya API Gateway** | **Perilaku yang dihasilkan** | 
| --- | --- | --- | 
| Izinkan | Izinkan | Izinkan | 
| Izinkan | Tidak Memungkinkan atau Menyangkal | Penyangkalan Implisit | 
| Izinkan | Menyangkal | Penolakan jelas | 
| Tidak Memungkinkan atau Menyangkal | Izinkan | Penyangkalan Implisit | 
| Tidak Memungkinkan atau Menyangkal | Tidak Memungkinkan atau Menyangkal | Penyangkalan Implisit | 
| Tidak Memungkinkan atau Menyangkal | Menyangkal | Penolakan jelas | 
| Menyangkal | Izinkan | Penolakan jelas | 
| Menyangkal | Tidak Memungkinkan atau Menyangkal | Penolakan jelas | 
| Menyangkal | Menyangkal | Penolakan jelas | 

# Contoh kebijakan sumber daya API Gateway
<a name="apigateway-resource-policies-examples"></a>

Halaman ini menyajikan beberapa contoh kasus penggunaan umum untuk kebijakan sumber daya API Gateway.

Contoh kebijakan berikut menggunakan sintaks yang disederhanakan untuk menentukan sumber daya API. Sintaks yang disederhanakan ini adalah cara singkat yang dapat Anda rujuk ke sumber daya API, alih-alih menentukan Nama Sumber Daya Amazon (ARN) lengkap. API Gateway mengonversi sintaks yang disingkat menjadi ARN lengkap saat Anda menyimpan kebijakan. Misalnya, Anda dapat menentukan sumber daya `execute-api:/stage-name/GET/pets` dalam kebijakan sumber daya. API Gateway mengonversi sumber daya menjadi `arn:aws:execute-api:us-east-2:123456789012:aabbccddee/stage-name/GET/pets` saat Anda menyimpan kebijakan sumber daya. API Gateway membangun ARN lengkap dengan menggunakan Wilayah saat ini, ID akun AWS Anda, dan ID REST API yang terkait dengan kebijakan sumber daya. Anda dapat menggunakan `execute-api:/*` untuk mewakili semua tahapan, metode, dan jalur di API saat ini. Untuk informasi tentang bahasa kebijakan akses, lihat [Mengakses ikhtisar bahasa kebijakan untuk Amazon API Gateway](apigateway-control-access-policy-language-overview.md).

**Topics**
+ [Contoh: Izinkan peran di AWS akun lain untuk menggunakan API](#apigateway-resource-policies-cross-account-example)
+ [Contoh: Tolak lalu lintas API berdasarkan alamat atau rentang IP sumber](#apigateway-resource-policies-source-ip-address-example)
+ [Contoh: Tolak lalu lintas API berdasarkan alamat atau rentang IP sumber saat menggunakan API pribadi](#apigateway-resource-policies-source-ip-address-vpc-example)
+ [Contoh: Izinkan lalu lintas API pribadi berdasarkan titik akhir VPC atau VPC sumber](#apigateway-resource-policies-source-vpc-example)

## Contoh: Izinkan peran di AWS akun lain untuk menggunakan API
<a name="apigateway-resource-policies-cross-account-example"></a>

Contoh kebijakan sumber daya berikut memberikan akses API dalam satu AWS akun ke dua peran di akun yang berbeda AWS melalui protokol [Signature Version 4 (SigV4](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html)) atau Signature [Version 4a (Sigv4a](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html#how-sigv4a-works)). Secara khusus, peran pengembang dan administrator untuk AWS akun yang diidentifikasi oleh `account-id-2` diberikan `execute-api:Invoke` tindakan untuk menjalankan `GET` tindakan pada `pets` sumber daya (API) di AWS akun Anda.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/developer",
                    "arn:aws:iam::111122223333:role/Admin"
                ]
            },
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/stage/GET/pets"
            ]
        }
    ]
}
```

------

## Contoh: Tolak lalu lintas API berdasarkan alamat atau rentang IP sumber
<a name="apigateway-resource-policies-source-ip-address-example"></a>

Contoh kebijakan sumber daya berikut menyangkal (memblokir) lalu lintas masuk ke API dari dua blok alamat IP sumber yang ditentukan.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
               "execute-api:/*"
            ],
            "Condition" : {
                "IpAddress": {
                    "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ]
                }
            }
        }
    ]
}
```

------

Jika Anda menggunakan kebijakan pengguna IAM atau kebijakan sumber daya API Gateway untuk mengontrol akses ke API Gateway atau API Gateway apa pun APIs, konfirmasikan bahwa kebijakan Anda diperbarui untuk menyertakan rentang IPv6 alamat. Kebijakan yang tidak diperbarui untuk menangani IPv6 alamat dapat memengaruhi akses klien ke API Gateway saat mereka mulai menggunakan titik akhir dualstack. Untuk informasi selengkapnya, lihat [Menggunakan IPv6 alamat dalam kebijakan IAM](api-ref.md#api-reference-service-endpoints-dualstack-iam).

## Contoh: Tolak lalu lintas API berdasarkan alamat atau rentang IP sumber saat menggunakan API pribadi
<a name="apigateway-resource-policies-source-ip-address-vpc-example"></a>

Contoh kebijakan sumber daya berikut menyangkal (memblokir) lalu lintas masuk ke API pribadi dari dua blok alamat IP sumber yang ditentukan. Saat menggunakan pribadi APIs, titik akhir VPC untuk `execute-api` menulis ulang alamat IP sumber asli. `aws:VpcSourceIp`Kondisi memfilter permintaan terhadap alamat IP pemohon asli.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
               "execute-api:/*"
            ],
            "Condition" : {
                "IpAddress": {
                    "aws:VpcSourceIp": ["192.0.2.0/24", "198.51.100.0/24"]
                }
            }
        }
    ]
}
```

------

## Contoh: Izinkan lalu lintas API pribadi berdasarkan titik akhir VPC atau VPC sumber
<a name="apigateway-resource-policies-source-vpc-example"></a>

Contoh kebijakan sumber daya berikut mengizinkan lalu lintas masuk ke API pribadi hanya dari virtual private cloud (VPC) atau titik akhir VPC tertentu.

Contoh kebijakan sumber daya ini menentukan VPC sumber:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ],
            "Condition" : {
                "StringNotEquals": {
                   "aws:SourceVpc": "vpc-1a2b3c4d"
                }
            }
        }
    ]
}
```

------

Contoh kebijakan sumber daya ini menentukan titik akhir VPC sumber:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ],
            "Condition" : {
                "StringNotEquals": {
                    "aws:SourceVpce": "vpce-1a2b3c4d"
                }
            }
        }
    ]
}
```

------

# Membuat dan melampirkan kebijakan sumber daya API Gateway ke API
<a name="apigateway-resource-policies-create-attach"></a>

Agar pengguna dapat mengakses API Anda dengan memanggil layanan eksekusi API, Anda harus membuat kebijakan sumber daya API Gateway dan melampirkan kebijakan tersebut ke API. Saat Anda melampirkan kebijakan ke API Anda, kebijakan tersebut menerapkan izin dalam kebijakan ke metode di API. Jika memperbarui kebijakan sumber daya, Anda harus menerapkan API.

**Topics**
+ [Prasyarat](#apigateway-resource-policies-prerequisites)
+ [Melampirkan kebijakan sumber daya ke API Gateway API](#apigateway-resource-policies-create-attach-procedure)
+ [Memecahkan masalah kebijakan sumber daya Anda](#apigateway-resource-policies-troubleshoot)

## Prasyarat
<a name="apigateway-resource-policies-prerequisites"></a>

 Untuk memperbarui kebijakan sumber daya API Gateway, Anda memerlukan `apigateway:UpdateRestApiPolicy` izin dan `apigateway:PATCH` izin.

Untuk API Regional atau yang dioptimalkan tepi, Anda dapat melampirkan kebijakan sumber daya ke API saat Anda membuatnya, atau setelah diterapkan. Untuk API pribadi, Anda tidak dapat menerapkan API tanpa kebijakan sumber daya. Untuk informasi selengkapnya, lihat [REST pribadi APIs di API Gateway](apigateway-private-apis.md).

## Melampirkan kebijakan sumber daya ke API Gateway API
<a name="apigateway-resource-policies-create-attach-procedure"></a>

Prosedur berikut menunjukkan cara melampirkan kebijakan sumber daya ke API Gateway API.

------
#### [ Konsol Manajemen AWS ]

**Untuk melampirkan kebijakan sumber daya ke API Gateway API**

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih REST API.

1. Di panel navigasi utama, pilih **Kebijakan sumber daya**.

1. Pilih **Buat kebijakan**.

1. (Opsional) **Pilih templat** untuk menghasilkan contoh kebijakan.

   Dalam contoh kebijakan, placeholder dilampirkan dalam double curly braces (). `"{{placeholder}}"` Ganti masing-masing placeholder, termasuk kawat gigi keriting, dengan informasi yang diperlukan.

1. Jika Anda tidak menggunakan salah satu contoh templat, masukkan kebijakan sumber daya Anda.

1. Pilih **Simpan perubahan**.

Jika API telah digunakan sebelumnya di konsol API Gateway, Anda harus menerapkannya kembali agar kebijakan sumber daya diterapkan.

------
#### [ AWS CLI ]

Untuk menggunakan AWS CLI untuk membuat API baru dan melampirkan kebijakan sumber daya ke dalamnya, gunakan [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)perintah berikut:

```
aws apigateway create-rest-api \
    --name "api-name" \
    --policy "{\"jsonEscapedPolicyDocument\"}"
```

Untuk menggunakan AWS CLI untuk melampirkan kebijakan sumber daya ke API yang ada, gunakan [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)perintah berikut: 

```
aws apigateway update-rest-api \
    --rest-api-id api-id \
    --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'
```

Anda juga dapat melampirkan kebijakan sumber daya Anda sebagai `policy.json` file terpisah dan memasukkannya ke dalam [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)perintah Anda. [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)Perintah berikut membuat API baru dengan kebijakan sumber daya:

```
aws apigateway create-rest-api \
    --name "api-name" \
    --policy file://policy.json
```

`policy.json`adalah kebijakan sumber daya API Gateway, seperti[Contoh: Tolak lalu lintas API berdasarkan alamat atau rentang IP sumber](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example).

------
#### [ AWS CloudFormation ]

Anda dapat menggunakan CloudFormation untuk membuat API dengan kebijakan sumber daya. Contoh berikut membuat REST API dengan contoh kebijakan sumber daya,[Contoh: Tolak lalu lintas API berdasarkan alamat atau rentang IP sumber](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example). 

```
AWSTemplateFormatVersion: 2010-09-09
Resources:
  Api:
    Type: 'AWS::ApiGateway::RestApi'
    Properties:
      Name: testapi
      Policy:
        Statement:
          - Action: 'execute-api:Invoke'
            Effect: Allow
            Principal: '*'
            Resource: 'execute-api:/*'
          - Action: 'execute-api:Invoke'
            Effect: Deny
            Principal: '*'
            Resource: 'execute-api:/*'
            Condition:
              IpAddress: 
                'aws:SourceIp': ["192.0.2.0/24", "198.51.100.0/24" ]
        Version: 2012-10-17		 	 	 
  Resource:
    Type: 'AWS::ApiGateway::Resource'
    Properties:
      RestApiId: !Ref Api
      ParentId: !GetAtt Api.RootResourceId
      PathPart: 'helloworld'
  MethodGet:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      RestApiId: !Ref Api
      ResourceId: !Ref Resource
      HttpMethod: GET
      ApiKeyRequired: false
      AuthorizationType: NONE
      Integration:
        Type: MOCK
        RequestTemplates:
          application/json: '{"statusCode": 200}'
        IntegrationResponses:
          - StatusCode: 200
            ResponseTemplates:
              application/json: '{}'
      MethodResponses:
        - StatusCode: 200
          ResponseModels:
            application/json: 'Empty'
  ApiDeployment:
    Type: 'AWS::ApiGateway::Deployment'
    DependsOn:
      - MethodGet
    Properties:
      RestApiId: !Ref Api
      StageName: test
```

------

## Memecahkan masalah kebijakan sumber daya Anda
<a name="apigateway-resource-policies-troubleshoot"></a>

Panduan pemecahan masalah berikut dapat membantu menyelesaikan masalah dengan kebijakan sumber daya Anda.

### API saya mengembalikan \$1"Message” :"User: anonymous tidak diizinkan untuk melakukan: execute-api:invoke on resource: arn:aws:execute-api:us-east-1: \$1\$1\$1\$1\$1\$1\$1\$1/\$1\$1\$1\$1/\$1\$1\$1\$1/ "\$1
<a name="apigateway-resource-policies-troubleshoot-auth"></a>

Dalam kebijakan sumber daya Anda, jika Anda menetapkan Principal ke AWS prinsipal, seperti berikut ini:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111111111111:role/developer",
                    "arn:aws:iam::111111111111:role/Admin"
                ]
            },
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/stage/GET/pets"
            ]
        }
    ]
}
```

------

Anda harus menggunakan `AWS_IAM` otorisasi untuk setiap metode di API Anda, atau API Anda mengembalikan pesan kesalahan sebelumnya. Untuk petunjuk selengkapnya tentang cara mengaktifkan `AWS_IAM` otorisasi untuk suatu metode, lihat[Metode untuk REST APIs di API Gateway](how-to-method-settings.md).

### Kebijakan sumber daya saya tidak diperbarui
<a name="apigateway-resource-policies-troubleshoot-deploy"></a>

 Jika memperbarui kebijakan sumber daya setelah API dibuat, Anda harus menerapkan API untuk menyebarkan perubahan setelah Anda melampirkan kebijakan yang diperbarui. Memperbarui atau menyimpan kebijakan saja tidak akan mengubah perilaku runtime API. Untuk informasi selengkapnya tentang penerapan API Anda, lihat[Menerapkan REST APIs di API Gateway](how-to-deploy-api.md). 

### Kebijakan sumber daya saya mengembalikan kesalahan berikut: Dokumen kebijakan tidak valid. Silakan periksa sintaks kebijakan dan pastikan bahwa Prinsipal valid.
<a name="apigateway-resource-policies-troubleshoot-invalid-principal"></a>

Untuk mengatasi masalah kesalahan ini, sebaiknya periksa sintaks kebijakan terlebih dahulu. Untuk informasi selengkapnya, lihat [Mengakses ikhtisar bahasa kebijakan untuk Amazon API Gateway](apigateway-control-access-policy-language-overview.md). Kami juga menyarankan Anda memeriksa bahwa semua prinsipal yang ditentukan valid dan belum dihapus.

Selain itu, jika API Anda berada di [Wilayah keikutsertaan](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#optinregion), verifikasi bahwa semua akun dalam kebijakan sumber daya mengaktifkan Region. 

# AWS kunci kondisi yang dapat digunakan dalam kebijakan sumber daya API Gateway
<a name="apigateway-resource-policies-aws-condition-keys"></a>

Tabel berikut berisi kunci AWS kondisi yang dapat digunakan dalam kebijakan sumber daya APIs di API Gateway untuk setiap jenis otorisasi.

Untuk informasi selengkapnya tentang kunci AWS kondisi, lihat [Kunci Konteks Kondisi AWS Global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html).


| **Kunci kondisi** | **Kriteria** | **Kebutuhan`AuthN`?** | **Jenis otorisasi** | 
| --- | --- | --- | --- | 
| aws:CurrentTime | Tidak ada | Tidak | Semua | 
| aws:EpochTime | Tidak ada | Tidak | Semua | 
| aws:TokenIssueTime | Kunci hanya ada dalam permintaan yang ditandatangani menggunakan kredensyal keamanan sementara. | Ya | IAM | 
| aws:MultiFactorAuthPresent | Kunci hanya ada dalam permintaan yang ditandatangani menggunakan kredensyal keamanan sementara. | Ya | IAM | 
| aws:MultiFactorAuthAge | Kunci hadir hanya jika MFA hadir dalam permintaan. | Ya | IAM | 
| aws:PrincipalAccount | Tidak ada | Ya | IAM | 
| aws:PrincipalArn | Tidak ada | Ya | IAM | 
| aws:PrincipalOrgID | Kunci ini disertakan dalam konteks permintaan hanya jika kepala sekolah adalah anggota organisasi. | Ya | IAM | 
| aws:PrincipalOrgPaths | Kunci ini disertakan dalam konteks permintaan hanya jika kepala sekolah adalah anggota organisasi. | Ya | IAM | 
| aws:PrincipalTag | Kunci ini disertakan dalam konteks permintaan jika prinsipal menggunakan pengguna IAM dengan tag terlampir. Ini disertakan untuk prinsipal yang menggunakan peran IAM dengan tag yang disematkan atau tag sesi. | Ya | IAM | 
| aws:PrincipalType | Tidak ada | Ya | IAM | 
| aws:Referer | Kunci hadir hanya jika nilai disediakan oleh pemanggil di header HTTP. | Tidak | Semua | 
| aws:SecureTransport | Tidak ada | Tidak | Semua | 
| aws:SourceArn | Tidak ada | Tidak | Semua | 
| aws:SourceIp | Tidak ada | Tidak | Semua | 
| aws:SourceVpc | Kunci ini hanya dapat digunakan untuk pribadi APIs. | Tidak | Semua | 
| aws:SourceVpce | Kunci ini hanya dapat digunakan untuk pribadi APIs. | Tidak | Semua | 
| aws:VpcSourceIp | Kunci ini hanya dapat digunakan untuk pribadi APIs. | Tidak | Semua | 
| aws:UserAgent | Kunci hadir hanya jika nilai disediakan oleh pemanggil di header HTTP. | Tidak | Semua | 
| aws:userid | Tidak ada | Ya | IAM | 
| aws:username | Tidak ada | Ya | IAM | 