

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

# Kontrol akses ke fungsi Lambda URLs
<a name="urls-auth"></a>

**catatan**  
Mulai Oktober 2025, fungsi baru URLs akan membutuhkan keduanya `lambda:InvokeFunctionUrl` dan `lambda:InvokeFunction` izin.

Anda dapat mengontrol akses ke fungsi Lambda URLs menggunakan [AuthType](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunctionUrlConfig.html#lambda-CreateFunctionUrlConfig-request-AuthType)parameter yang dikombinasikan dengan [kebijakan berbasis sumber daya yang dilampirkan ke fungsi spesifik](access-control-resource-based.md) Anda. Konfigurasi kedua komponen ini menentukan siapa yang dapat memanggil atau melakukan tindakan administratif lainnya pada URL fungsi Anda.

`AuthType`Parameter menentukan cara Lambda mengautentikasi atau mengotorisasi permintaan ke URL fungsi Anda. Saat Anda mengonfigurasi URL fungsi Anda, Anda harus menentukan salah satu `AuthType` opsi berikut:
+ `AWS_IAM`— Lambda menggunakan AWS Identity and Access Management (IAM) untuk mengautentikasi dan mengotorisasi permintaan berdasarkan kebijakan identitas kepala sekolah IAM dan kebijakan berbasis sumber daya fungsi. Pilih opsi ini jika Anda hanya ingin pengguna dan peran yang diautentikasi untuk memanggil fungsi Anda menggunakan URL fungsi.
+ `NONE`— Lambda tidak melakukan otentikasi apa pun sebelum menjalankan fungsi Anda. Namun, kebijakan berbasis sumber daya fungsi Anda selalu berlaku dan harus memberikan akses publik sebelum URL fungsi Anda dapat menerima permintaan. Pilih opsi ini untuk mengizinkan akses publik yang tidak diautentikasi ke URL fungsi Anda.

Untuk wawasan tambahan tentang keamanan, Anda dapat menggunakan AWS Identity and Access Management Access Analyzer untuk mendapatkan analisis komprehensif tentang akses eksternal ke URL fungsi Anda. IAM Access Analyzer juga memantau izin baru atau yang diperbarui pada fungsi Lambda Anda untuk membantu Anda mengidentifikasi izin yang memberikan akses publik dan lintas akun. Anda dapat menggunakan IAM Access Analyzer tanpa biaya. Untuk memulai dengan IAM Access Analyzer, lihat [Menggunakan AWS IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) Access Analyzer.

Halaman ini berisi contoh kebijakan berbasis sumber daya untuk kedua jenis autentikasi, dan cara membuat kebijakan ini menggunakan [AddPermission](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html)operasi API atau konsol Lambda. Untuk informasi tentang cara memanggil URL fungsi setelah menyiapkan izin, lihat. [Memanggil fungsi Lambda URLs](urls-invocation.md)

**Topics**
+ [Menggunakan tipe `AWS_IAM` autentikasi](#urls-auth-iam)
+ [Menggunakan tipe `NONE` autentikasi](#urls-auth-none)
+ [Tata kelola dan kontrol akses](#urls-governance)

## Menggunakan tipe `AWS_IAM` autentikasi
<a name="urls-auth-iam"></a>

Jika Anda memilih jenis `AWS_IAM` autentikasi, pengguna yang perlu memanggil URL fungsi Lambda Anda harus memiliki izin dan. `lambda:InvokeFunctionUrl` `lambda:InvokeFunction` [Bergantung pada siapa yang membuat permintaan pemanggilan, Anda mungkin harus memberikan izin ini menggunakan kebijakan berbasis sumber daya.](access-control-resource-based.md)

**Jika prinsipal yang membuat permintaan Akun AWS sama dengan URL fungsi, maka prinsipal harus memiliki `lambda:InvokeFunctionUrl` dan `lambda:InvokeFunction` izin dalam kebijakan [berbasis identitas mereka, **atau** memiliki izin yang diberikan kepada mereka dalam kebijakan berbasis](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) sumber daya fungsi.** Dengan kata lain, kebijakan berbasis sumber daya bersifat opsional jika pengguna sudah memiliki `lambda:InvokeFunctionUrl` dan `lambda:InvokeFunction` izin dalam kebijakan berbasis identitas mereka. Evaluasi kebijakan mengikuti aturan yang diuraikan dalam [logika evaluasi kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html).

****Jika prinsipal yang membuat permintaan berada di akun yang berbeda, maka prinsipal harus memiliki kebijakan berbasis identitas yang memberi mereka `lambda:InvokeFunctionUrl` dan izin serta `lambda:InvokeFunction` izin yang diberikan kepada mereka dalam kebijakan berbasis sumber daya pada fungsi yang mereka coba panggil.**** Evaluasi kebijakan mengikuti aturan yang diuraikan dalam [Menentukan apakah permintaan lintas akun diperbolehkan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html#policy-eval-cross-account).

Kebijakan berbasis sumber daya berikut memungkinkan `example` peran Akun AWS `444455556666` untuk memanggil URL fungsi yang terkait dengan fungsi. `my-function` Kunci InvokedViaFunctionUrl konteks [lambda:](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html#lambda-AddPermission-request-InvokedViaFunctionUrl) membatasi `lambda:InvokeFunction` tindakan untuk berfungsi panggilan URL. Ini berarti bahwa prinsipal harus menggunakan URL fungsi untuk memanggil fungsi. Jika Anda tidak menyertakan`lambda:InvokedViaFunctionUrl`, prinsipal dapat memanggil fungsi Anda melalui metode pemanggilan lainnya, selain URL fungsi.

**Example — Kebijakan berbasis sumber daya lintas akun**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::444455556666:role/example"
      },
      "Action": "lambda:InvokeFunctionUrl",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
      "Condition": {
        "StringEquals": {
          "lambda:FunctionUrlAuthType": "AWS_IAM"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::444455556666:role/example"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
      "Condition": {
        "Bool": {
          "lambda:InvokedViaFunctionUrl": "true"
        }
      }
    }
  ]
}
```

Anda dapat membuat kebijakan berbasis sumber daya ini melalui konsol menggunakan langkah-langkah berikut:

**Untuk memberikan izin pemanggilan URL ke akun lain (konsol)**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih nama fungsi yang ingin Anda berikan izin pemanggilan URL.

1. Pilih tab **Konfigurasi**, lalu pilih **Izin**.

1. **Di bawah **Kebijakan berbasis sumber daya**, pilih Tambahkan izin.**

1. Pilih **URL Fungsi**.

1. Untuk **jenis Auth**, pilih **AWS\$1IAM**.

1. Masukkan **ID Pernyataan** untuk pernyataan kebijakan Anda.

1. Untuk **Principal**, masukkan ID akun atau Nama Sumber Daya Amazon (ARN) pengguna atau peran yang ingin Anda berikan izin. Sebagai contoh: **444455556666**.

1. Pilih **Simpan**.

Atau, Anda dapat membuat kebijakan ini menggunakan perintah [add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) AWS Command Line Interface (AWS CLI) berikut. Saat Anda menggunakan AWS CLI, Anda harus menambahkan `lambda:InvokeFunction` pernyataan `lambda:InvokeFunctionUrl` dan secara terpisah. Contoh:

```
aws lambda add-permission --function-name my-function \
  --statement-id UrlPolicyInvokeURL \
  --action lambda:InvokeFunctionUrl \
  --principal 444455556666 \
  --function-url-auth-type AWS_IAM
```

```
aws lambda add-permission --function-name my-function \
  --statement-id UrlPolicyInvokeFunction \
  --action lambda:InvokeFunction \
  --principal 444455556666 \
  --invoked-via-function-url
```

## Menggunakan tipe `NONE` autentikasi
<a name="urls-auth-none"></a>

**penting**  
Ketika jenis autentikasi URL fungsi Anda `NONE` dan Anda memiliki [kebijakan berbasis sumber daya](access-control-resource-based.md) yang memberikan akses publik, setiap pengguna yang tidak diautentikasi dengan URL fungsi Anda dapat memanggil fungsi Anda.

Dalam beberapa kasus, Anda mungkin ingin URL fungsi Anda menjadi publik. Misalnya, Anda mungkin ingin menyajikan permintaan yang dibuat langsung dari browser web. Untuk mengizinkan akses publik ke URL fungsi Anda, pilih jenis `NONE` autentikasi.

Jika Anda memilih jenis `NONE` autentikasi, Lambda tidak menggunakan IAM untuk mengautentikasi permintaan ke URL fungsi Anda. Namun, fungsi Anda harus memiliki kebijakan berbasis sumber daya yang memungkinkan dan. `lambda:InvokeFunctionUrl` `lambda:InvokeFunction` Saat Anda membuat URL fungsi dengan jenis autentikasi `NONE` menggunakan konsol atau AWS Serverless Application Model (AWS SAM), Lambda secara otomatis membuat kebijakan berbasis sumber daya untuk Anda. Jika Anda menggunakan AWS CLI, AWS CloudFormation, atau Lambda API secara langsung, Anda harus [menambahkan sendiri kebijakan tersebut](#policy-cli).

Sebaiknya sertakan kunci InvokedViaFunctionUrl konteks [lambda:](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html#lambda-AddPermission-request-InvokedViaFunctionUrl) dalam kebijakan berbasis sumber daya saat menggunakan jenis autentikasi. `NONE` Kunci konteks ini memastikan bahwa fungsi hanya dapat dipanggil melalui URL fungsi dan tidak melalui metode pemanggilan lainnya.

Perhatikan hal berikut tentang kebijakan ini:
+ Semua entitas dapat memanggil `lambda:InvokeFunctionUrl` dan`lambda:InvokeFunction`. Ini berarti bahwa siapa pun yang memiliki URL fungsi Anda dapat memanggil fungsi Anda.
+ Nilai kunci `lambda:FunctionUrlAuthType` kondisi adalah`NONE`. Ini berarti bahwa pernyataan kebijakan mengizinkan akses hanya jika jenis autentikasi URL fungsi Anda juga`NONE`.
+ `lambda:InvokedViaFunctionUrl`Kondisi ini memastikan bahwa fungsi hanya dapat dipanggil melalui URL fungsi dan tidak melalui metode pemanggilan lainnya.

**Example — Kebijakan berbasis sumber daya default untuk jenis autentikasi NONE**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "FunctionURLAllowPublicAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "lambda:InvokeFunctionUrl",
      "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
      "Condition": {
        "StringEquals": {
          "lambda:FunctionUrlAuthType": "NONE"
        }
      }
    },
    {
      "Sid": "FunctionURLInvokeAllowPublicAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
      "Condition": {
        "Bool": {
          "lambda:InvokedViaFunctionUrl": "true"
        }
      }
    }
  ]
}
```

**Buat kebijakan berbasis sumber daya menggunakan AWS CLI**  
Kecuali Anda menggunakan konsol atau AWS SAM untuk membuat URL fungsi dengan jenis autentikasi`NONE`, Anda harus menambahkan sendiri kebijakan berbasis sumber daya. Gunakan perintah berikut untuk membuat pernyataan untuk `lambda:InvokeFunctionUrl` dan `lambda:InvokeFunction` izin. Setiap pernyataan harus ditambahkan dalam perintah terpisah.

```
aws lambda add-permission \
  --function-name UrlTestFunction \
  --statement-id UrlPolicyInvokeURL \
  --action lambda:InvokeFunctionUrl \
  --principal * \
  --function-url-auth-type NONE
```

```
aws lambda add-permission \
  --function-name UrlTestFunction \
  --statement-id UrlPolicyInvokeFunction \
  --action lambda:InvokeFunction \
  --principal * \
  --invoked-via-function-url
```

**catatan**  
Jika Anda menghapus URL fungsi dengan jenis autentikasi`NONE`, Lambda tidak secara otomatis menghapus kebijakan berbasis sumber daya terkait. Jika ingin menghapus kebijakan ini, Anda harus melakukannya secara manual.

Jika kebijakan berbasis sumber daya fungsi tidak memberikan `lambda:invokeFunctionUrl` dan `lambda:InvokeFunction` izin, pengguna akan mendapatkan kode kesalahan 403 Forbidden saat mereka mencoba memanggil URL fungsi Anda. Ini akan terjadi bahkan jika URL fungsi menggunakan jenis `NONE` autentikasi.

## Tata kelola dan kontrol akses
<a name="urls-governance"></a>

Selain izin pemanggilan URL fungsi, Anda juga dapat mengontrol akses pada tindakan yang digunakan untuk mengonfigurasi fungsi. URLs Lambda mendukung tindakan kebijakan IAM berikut untuk fungsi: URLs
+ `lambda:InvokeFunctionUrl`— Memanggil fungsi Lambda menggunakan URL fungsi.
+ `lambda:CreateFunctionUrlConfig`— Buat URL fungsi dan atur`AuthType`.
+ `lambda:UpdateFunctionUrlConfig`— Perbarui konfigurasi URL fungsi dan nya`AuthType`.
+ `lambda:GetFunctionUrlConfig`— Lihat detail URL fungsi.
+ `lambda:ListFunctionUrlConfigs`— Daftar konfigurasi URL fungsi.
+ `lambda:DeleteFunctionUrlConfig`— Hapus URL fungsi.

Untuk mengizinkan atau menolak akses URL fungsi ke AWS entitas lain, sertakan tindakan ini dalam kebijakan IAM. Misalnya, kebijakan berikut memberikan `example` peran dalam Akun AWS `444455556666` izin untuk memperbarui URL fungsi untuk fungsi **my-function** di akun. `123456789012`

**Example kebijakan URL fungsi lintas akun**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": { 
                "AWS": "arn:aws:iam::444455556666:role/example"
            },
            "Action": "lambda:UpdateFunctionUrlConfig",
            "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function"
        }
    ]
}
```

### Kunci syarat
<a name="urls-condition-keys"></a>

Untuk kontrol akses berbutir halus atas fungsi Anda URLs, gunakan tombol konteks kondisi. Lambda mendukung tombol konteks berikut untuk fungsi: URLs
+ `lambda:FunctionUrlAuthType`— Mendefinisikan nilai enum yang menjelaskan jenis autentikasi yang digunakan URL fungsi Anda. Nilai dapat berupa `AWS_IAM` atau `NONE`, salah satu.
+ `lambda:InvokedViaFunctionUrl`— Membatasi `lambda:InvokeFunction` tindakan untuk panggilan yang dilakukan melalui URL fungsi. Ini memastikan bahwa fungsi hanya dapat dipanggil menggunakan URL fungsi dan tidak melalui metode pemanggilan lainnya. Untuk contoh kebijakan berbasis sumber daya yang menggunakan kunci `lambda:InvokedViaFunctionUrl` konteks, lihat contoh di dan. [Menggunakan tipe `AWS_IAM` autentikasi](#urls-auth-iam) [Menggunakan tipe `NONE` autentikasi](#urls-auth-none)

Anda dapat menggunakan kunci konteks ini dalam kebijakan yang terkait dengan fungsi Anda. Misalnya, Anda mungkin ingin membatasi siapa yang dapat membuat perubahan konfigurasi pada fungsi URLs Anda. Untuk menolak semua `UpdateFunctionUrlConfig` permintaan ke fungsi apa pun dengan jenis autentikasi URL`NONE`, Anda dapat menentukan kebijakan berikut:

**Example kebijakan URL fungsi dengan penolakan eksplisit**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action":[
                "lambda:UpdateFunctionUrlConfig"
            ],
            "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*",
            "Condition": {
                "StringEquals": {
                    "lambda:FunctionUrlAuthType": "NONE"
                }
            }
        }
    ]
}
```

Untuk memberikan `example` peran dalam Akun AWS `444455556666` izin untuk membuat `CreateFunctionUrlConfig` dan `UpdateFunctionUrlConfig` permintaan pada fungsi dengan jenis autentikasi URL`AWS_IAM`, Anda dapat menentukan kebijakan berikut:

**Example kebijakan URL fungsi dengan izin eksplisit**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": { 
                "AWS": "arn:aws:iam::444455556666:role/example"
            },
            "Action":[
                "lambda:CreateFunctionUrlConfig",
                "lambda:UpdateFunctionUrlConfig"
            ],
            "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*",
            "Condition": {
                "StringEquals": {
                    "lambda:FunctionUrlAuthType": "AWS_IAM"
                }
            }
        }
    ]
}
```

Anda juga dapat menggunakan kunci kondisi ini dalam [kebijakan kontrol layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCP). Gunakan SCPs untuk mengelola izin di seluruh organisasi di AWS Organizations. Misalnya, untuk menolak pengguna membuat atau memperbarui fungsi URLs yang menggunakan apa pun selain jenis `AWS_IAM` autentikasi, gunakan kebijakan kontrol layanan berikut:

**Example fungsi URL SCP dengan penolakan eksplisit**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action":[
                "lambda:CreateFunctionUrlConfig",
                "lambda:UpdateFunctionUrlConfig"
            ],
            "Resource": "arn:aws:lambda:*:123456789012:function:*",
            "Condition": {
                "StringNotEquals": {
                    "lambda:FunctionUrlAuthType": "AWS_IAM"
                }
            }
        }
    ]
}
```