

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

# Kontrol akses untuk menjalankan API
<a name="api-gateway-control-access-using-iam-policies-to-invoke-api"></a>

Di bagian ini, Anda mempelajari tentang model izin untuk mengontrol akses ke API Anda menggunakan izin IAM. Ketika otorisasi IAM diaktifkan, klien harus menggunakan Signature Version 4a (Sigv4a) dan Sigv4a Versi Tanda Tangan 4 (SigV4) untuk menandatangani permintaan mereka dengan kredensi. AWS Untuk informasi selengkapnya, lihat [Versi AWS Tanda Tangan 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html).

Pada bagian ini, kami menampilkan templat pernyataan kebijakan IAM dan referensi pernyataan kebijakan. Referensi pernyataan kebijakan mencakup format `Action` dan `Resource` bidang yang terkait dengan layanan eksekusi API. Gunakan referensi ini untuk membuat pernyataan kebijakan IAM Anda. Saat membuat pernyataan kebijakan IAM, Anda mungkin perlu mempertimbangkan bagaimana kebijakan sumber daya API Gateway memengaruhi alur kerja otorisasi. Untuk informasi selengkapnya, lihat [Bagaimana kebijakan sumber daya API Gateway memengaruhi alur kerja otorisasi](apigateway-authorization-flow.md).

Untuk pribadi APIs, Anda harus menggunakan kombinasi kebijakan sumber daya API Gateway dan kebijakan titik akhir VPC. Untuk informasi selengkapnya, lihat topik berikut:
+ [Kontrol akses ke REST API dengan kebijakan sumber daya API Gateway](apigateway-resource-policies.md)
+ [Menggunakan kebijakan titik akhir VPC secara pribadi APIs di API Gateway](apigateway-vpc-endpoint-policies.md)

## Kontrol siapa yang dapat memanggil metode API Gateway API dengan kebijakan IAM
<a name="api-gateway-who-can-invoke-an-api-method-using-iam-policies"></a>

 Untuk mengontrol siapa yang dapat atau tidak dapat memanggil API yang diterapkan dengan izin IAM, buat dokumen kebijakan IAM dengan izin yang diperlukan. Template untuk dokumen kebijakan semacam itu ditampilkan sebagai berikut. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Permission",
      "Action": [
        "execute-api:Execution-operation"           
      ],
      "Resource": [
        "arn:aws:execute-api:region:123456789012:api-id/stage/METHOD_HTTP_VERB/Resource-path"
      ]
    }
  ]
}
```

------

 Di sini, `Permission` akan diganti oleh `Allow` atau `Deny` tergantung pada apakah Anda ingin memberikan atau mencabut izin yang disertakan. `Execution-operation`akan digantikan oleh operasi yang didukung oleh layanan eksekusi API. `METHOD_HTTP_VERB`singkatan dari kata kerja HTTP yang didukung oleh sumber daya yang ditentukan. `Resource-path`adalah placeholder untuk jalur URL dari `[Resource](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html)` instance API yang diterapkan yang mendukung hal tersebut. `METHOD_HTTP_VERB` Untuk informasi selengkapnya, lihat [Referensi pernyataan kebijakan IAM untuk menjalankan API di API Gateway](#api-gateway-calling-api-permissions). 

**catatan**  
Agar kebijakan IAM efektif, Anda harus mengaktifkan autentikasi IAM pada metode API dengan menyetel properti `AWS_IAM` metode. `[authorizationType](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html#authorizationType)` Gagal melakukannya akan membuat metode API ini dapat diakses publik.

 Misalnya, untuk memberikan izin kepada pengguna untuk melihat daftar hewan peliharaan yang diekspos oleh API tertentu, tetapi untuk menolak izin pengguna untuk menambahkan hewan peliharaan ke daftar, Anda dapat menyertakan pernyataan berikut dalam kebijakan IAM: 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke"           
      ],
      "Resource": [
        "arn:aws:execute-api:us-east-1:111111111111:api-id/*/GET/pets"
      ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "execute-api:Invoke"           
      ],
      "Resource": [
        "arn:aws:execute-api:us-east-1:111111111111:api-id/*/POST/pets"
      ]
    }
  ]
}
```

------

Untuk memberikan izin kepada pengguna untuk melihat hewan peliharaan tertentu yang diekspos oleh API yang dikonfigurasi sebagai`GET /pets/{petId}`, Anda dapat menyertakan pernyataan berikut dalam kebijakan IAM:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke"
            ],
            "Resource": [
                "arn:aws:execute-api:us-east-1:111122223333:api-id/*/GET/pets/a1b2"
            ]
        }
    ]
}
```

------

## Referensi pernyataan kebijakan IAM untuk menjalankan API di API Gateway
<a name="api-gateway-calling-api-permissions"></a>

Informasi berikut menjelaskan format Action and Resource dari pernyataan kebijakan IAM tentang izin akses untuk menjalankan API.

### Format tindakan izin untuk menjalankan API di API Gateway
<a name="api-gateway-iam-policy-action-format-for-executing-api"></a>

`Action`Ekspresi pelaksana API memiliki format umum berikut:

```
execute-api:action
```

di *action* mana tindakan pelaksana API yang tersedia:
+ **\$1**, yang mewakili semua tindakan berikut.
+ **Invoke**, digunakan untuk memanggil API atas permintaan klien.
+ **InvalidateCache**, digunakan untuk membatalkan cache API atas permintaan klien.

### Format sumber daya izin untuk menjalankan API di API Gateway
<a name="api-gateway-iam-policy-resource-format-for-executing-api"></a>

`Resource`Ekspresi pelaksana API memiliki format umum berikut:

```
arn:aws:execute-api:region:account-id:api-id/stage-name/HTTP-VERB/resource-path-specifier
```

di mana:
+ *region*adalah AWS wilayah (seperti **us-east-1** atau **\$1** untuk semua AWS wilayah) yang sesuai dengan API yang diterapkan untuk metode tersebut.
+ *account-id*adalah Id AWS akun 12 digit dari pemilik REST API. 
+ *api-id*adalah pengidentifikasi API Gateway yang telah ditetapkan ke API untuk metode tersebut.
+ *stage-name*adalah nama tahap yang terkait dengan metode.
+ *HTTP-VERB*adalah kata kerja HTTP untuk metode ini. Ini bisa menjadi salah satu dari yang berikut: GET, POST, PUT, DELETE, PATCH.
+ *resource-path-specifier*adalah jalan menuju metode yang diinginkan.

**catatan**  
Jika Anda menentukan wildcard (`*`), `Resource` ekspresi akan menerapkan wildcard ke ekspresi lainnya.

Beberapa contoh ekspresi sumber daya meliputi:
+ **arn:aws:execute-api:\$1:\$1:\$1**untuk jalur sumber daya apa pun di tahap apa pun, untuk API apa pun di AWS wilayah mana pun.
+ **arn:aws:execute-api:us-east-1:\$1:\$1**untuk jalur sumber daya apa pun di tahap apa pun, untuk API apa pun di AWS wilayah`us-east-1`.
+ **arn:aws:execute-api:us-east-1:\$1:*api-id*/\$1**untuk jalur sumber daya apa pun di tahap apa pun, untuk API dengan pengenal *api-id* di AWS wilayah us-east-1.
+ **arn:aws:execute-api:us-east-1:\$1:*api-id*/`test`/\$1**untuk jalur sumber daya apa pun pada tahap`test`, untuk API dengan pengenal *api-id* di AWS wilayah us-east-1.

Untuk mempelajari selengkapnya, lihat [Referensi API Gateway Amazon Resource Name (ARN)](arn-format-reference.md).