

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

# Mengelola izin di AWS Lambda
<a name="lambda-permissions"></a>

Anda dapat menggunakan AWS Identity and Access Management (IAM) untuk mengelola izin di. AWS Lambda Ada dua kategori utama izin yang perlu Anda pertimbangkan saat bekerja dengan fungsi Lambda:
+ Izin yang diperlukan fungsi Lambda Anda untuk melakukan tindakan API dan mengakses sumber daya lainnya AWS 
+ Izin yang dibutuhkan AWS pengguna dan entitas lain untuk mengakses fungsi Lambda Anda

Fungsi Lambda seringkali perlu mengakses AWS sumber daya lain, dan melakukan berbagai operasi API pada sumber daya tersebut. Misalnya, Anda mungkin memiliki fungsi Lambda yang merespons peristiwa dengan memperbarui entri dalam database Amazon DynamoDB. Dalam hal ini, fungsi Anda memerlukan izin untuk mengakses database, serta izin untuk menempatkan atau memperbarui item dalam database tersebut.

[Anda menentukan izin yang dibutuhkan fungsi Lambda Anda dalam peran IAM khusus yang disebut peran eksekusi.](lambda-intro-execution-role.md) Dalam peran ini, Anda dapat melampirkan kebijakan yang menentukan setiap izin yang diperlukan fungsi untuk mengakses AWS sumber daya lain, dan membaca dari sumber peristiwa. Setiap fungsi Lambda harus memiliki peran eksekusi. Minimal, peran eksekusi Anda harus memiliki akses ke Amazon CloudWatch karena fungsi Lambda masuk ke Log secara CloudWatch default. Anda dapat melampirkan [kebijakan `AWSLambdaBasicExecutionRole` terkelola](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaBasicExecutionRole.html) ke peran eksekusi Anda untuk memenuhi persyaratan ini.

Untuk memberikan izin lain Akun AWS, organisasi, dan layanan untuk mengakses sumber daya Lambda Anda, Anda memiliki beberapa opsi:
+ Anda dapat menggunakan [kebijakan berbasis identitas](access-control-identity-based.md) untuk memberi pengguna lain akses ke sumber daya Lambda Anda. Kebijakan berbasis identitas dapat berlaku untuk pengguna secara langsung, atau untuk kelompok dan peran yang terkait dengan pengguna.
+ Anda dapat menggunakan [kebijakan berbasis sumber daya](access-control-resource-based.md) untuk memberikan akun dan Layanan AWS izin lain untuk mengakses sumber daya Lambda Anda. Saat pengguna mencoba mengakses sumber daya Lambda, Lambda mempertimbangkan kebijakan berbasis identitas pengguna dan kebijakan berbasis sumber daya. Saat AWS layanan seperti Amazon Simple Storage Service (Amazon S3) memanggil fungsi Lambda Anda, Lambda hanya mempertimbangkan kebijakan berbasis sumber daya.
+ Anda dapat menggunakan model [kontrol akses berbasis atribut (ABAC) untuk mengontrol](attribute-based-access-control.md) akses ke fungsi Lambda Anda. Dengan ABAC, Anda dapat melampirkan tag ke fungsi Lambda, meneruskannya dalam permintaan API tertentu, atau melampirkannya ke prinsipal IAM yang membuat permintaan. Tentukan tag yang sama dalam elemen kondisi kebijakan IAM untuk mengontrol akses fungsi.

Di AWS, ini adalah praktik terbaik untuk hanya memberikan izin yang diperlukan untuk melakukan tugas (izin hak istimewa paling sedikit)[.](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) Untuk menerapkan ini di Lambda, kami sarankan memulai dengan kebijakan [AWS terkelola](permissions-managed-policies.md). Anda dapat menggunakan kebijakan terkelola ini apa adanya, atau sebagai titik awal untuk menulis kebijakan Anda sendiri yang lebih ketat.

Untuk membantu Anda menyempurnakan izin untuk akses hak istimewa paling sedikit, Lambda menyediakan beberapa ketentuan tambahan yang dapat Anda sertakan dalam kebijakan Anda. Untuk informasi selengkapnya, lihat [Menyesuaikan bagian Sumber Daya dan Ketentuan kebijakan](lambda-api-permissions-ref.md).

Untuk informasi lebih lanjut tentang IAM, lihat *[Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)*.

# Mendefinisikan izin fungsi Lambda dengan peran pelaksanaan
<a name="lambda-intro-execution-role"></a>

Peran eksekusi fungsi Lambda adalah peran AWS Identity and Access Management (IAM) yang memberikan izin fungsi untuk mengakses dan sumber daya. Layanan AWS Misalnya, Anda dapat membuat peran eksekusi yang memiliki izin untuk mengirim log ke Amazon CloudWatch dan mengunggah data pelacakan AWS X-Ray. Halaman ini memberikan informasi tentang cara membuat, melihat, dan mengelola peran eksekusi fungsi Lambda.

Lambda secara otomatis mengasumsikan peran eksekusi Anda ketika Anda memanggil fungsi Anda. Anda harus menghindari panggilan manual `sts:AssumeRole` untuk mengambil peran eksekusi dalam kode fungsi Anda. Jika kasus penggunaan Anda mengharuskan peran tersebut mengasumsikan dirinya sendiri, Anda harus memasukkan peran itu sendiri sebagai prinsipal tepercaya dalam kebijakan kepercayaan peran Anda. Untuk informasi selengkapnya tentang cara mengubah kebijakan kepercayaan peran, lihat [Memodifikasi kebijakan kepercayaan peran (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy) di Panduan Pengguna IAM.

Agar Lambda dapat mengambil peran eksekusi Anda dengan benar, [kebijakan kepercayaan](#permissions-executionrole-api) peran harus menentukan prinsip layanan Lambda (`lambda.amazonaws.com`) sebagai layanan tepercaya.

**Topics**
+ [

## Membuat peran eksekusi di konsol IAM
](#permissions-executionrole-console)
+ [

## Menciptakan dan mengelola peran dengan AWS CLI
](#permissions-executionrole-api)
+ [

## Berikan akses hak istimewa paling rendah ke peran eksekusi Lambda Anda
](#permissions-executionrole-least-privilege)
+ [

# Melihat dan memperbarui izin dalam peran eksekusi
](permissions-executionrole-update.md)
+ [

# Bekerja dengan kebijakan AWS terkelola dalam peran eksekusi
](permissions-managed-policies.md)
+ [

# Menggunakan fungsi sumber ARN untuk mengontrol perilaku akses fungsi
](permissions-source-function-arn.md)

## Membuat peran eksekusi di konsol IAM
<a name="permissions-executionrole-console"></a>

Secara default, Lambda membuat peran eksekusi dengan izin minimal saat Anda [membuat fungsi di konsol Lambda](getting-started.md#getting-started-create-function). Secara khusus, peran eksekusi ini mencakup [kebijakan `AWSLambdaBasicExecutionRole` terkelola](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaBasicExecutionRole.html), yang memberikan izin dasar fungsi Anda untuk mencatat peristiwa ke Amazon CloudWatch Logs. Anda dapat memilih **Buat peran default** di bagian **Izin**.

Anda dapat memilih peran yang ada dengan memilih **Gunakan peran lain** di bagian **Izin**. Jika fungsi Lambda Anda memerlukan izin tambahan untuk melakukan tugas seperti memperbarui entri dalam database Amazon DynamoDB sebagai respons terhadap peristiwa, Anda dapat membuat peran eksekusi kustom dengan izin yang diperlukan. Untuk melakukan ini, pilih **Gunakan peran lain** di bagian **Izin**, yang membuka laci tempat Anda dapat menyesuaikan izin Anda.

**Untuk mengonfigurasi peran eksekusi dari Konsol**

1. Masukkan **nama peran** di bagian Rincian peran.

1. Di bagian **Kebijakan**, pilih **Gunakan kebijakan yang ada**.

1. Pilih kebijakan AWS terkelola yang ingin dilampirkan ke peran Anda. Misalnya, jika fungsi Anda perlu mengakses DynamoDB, pilih kebijakan yang dikelola Dynamo **AWSLambdaDBExecutionRole**.

1. Pilih **Buat peran**.

Atau, saat Anda [membuat fungsi di konsol Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function), Anda dapat melampirkan peran eksekusi apa pun yang sebelumnya Anda buat ke fungsi tersebut. Jika Anda ingin melampirkan peran eksekusi baru ke fungsi yang ada, ikuti langkah-langkah dalam [Memperbarui peran eksekusi fungsi](permissions-executionrole-update.md).

## Menciptakan dan mengelola peran dengan AWS CLI
<a name="permissions-executionrole-api"></a>

Untuk membuat peran eksekusi dengan AWS Command Line Interface (AWS CLI), gunakan **create-role** perintah. Saat menggunakan perintah ini, Anda dapat menentukan kebijakan kepercayaan sebaris. Kebijakan kepercayaan peran memberikan izin kepada prinsipal yang ditentukan untuk mengambil peran tersebut. Dalam contoh berikut, Anda memberikan izin kepada kepala layanan Lambda untuk mengambil peran Anda. Perhatikan bahwa persyaratan untuk menghindari tanda kutip dalam string JSON dapat bervariasi tergantung pada shell Anda.

```
aws iam create-role \
  --role-name lambda-ex \
  --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
```

Anda juga dapat menentukan kebijakan kepercayaan untuk peran tersebut menggunakan file JSON terpisah. Dalam contoh berikut, `trust-policy.json` adalah file dalam direktori saat ini.

**Example trust-policy.json**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

```
aws iam create-role \
  --role-name lambda-ex \
  --assume-role-policy-document file://trust-policy.json
```

Untuk menambahkan izin peran, gunakan perintah **attach-policy-to-role**. Perintah berikut menambahkan kebijakan `AWSLambdaBasicExecutionRole` terkelola ke peran `lambda-ex` eksekusi.

```
aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
```

Setelah Anda membuat peran eksekusi, lampirkan ke fungsi Anda. Saat Anda [membuat fungsi di konsol Lambda](getting-started.md#getting-started-create-function), Anda dapat melampirkan peran eksekusi apa pun yang sebelumnya Anda buat ke fungsi tersebut. Jika Anda ingin melampirkan peran eksekusi baru ke fungsi yang ada, ikuti langkah-langkahnya[Memperbarui peran eksekusi fungsi](permissions-executionrole-update.md#update-execution-role).

## Berikan akses hak istimewa paling rendah ke peran eksekusi Lambda Anda
<a name="permissions-executionrole-least-privilege"></a>

Ketika Anda pertama kali membuat IAM role untuk fungsi Lambda Anda selama tahap pengembangan, Anda mungkin terkadang memberikan izin di luar apa yang diperlukan. Sebelum memublikasikan fungsi Anda di lingkungan produksi, sebagai praktik terbaik, sesuaikan kebijakan agar hanya menyertakan izin yang diperlukan. *Untuk informasi selengkapnya, lihat [Menerapkan izin hak istimewa terkecil di Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) IAM.*

Menggunakan IAM Access Analyzer untuk membantu mengidentifikasi izin yang diperlukan untuk kebijakan peran eksekusi IAM. IAM Access Analyzer meninjau AWS CloudTrail log Anda selama rentang tanggal yang Anda tentukan dan menghasilkan templat kebijakan hanya dengan izin yang digunakan fungsi selama waktu tersebut. Anda dapat menggunakan templat untuk membuat kebijakan terkelola dengan izin terperinci, lalu melampirkannya ke IAM role. Dengan begitu, Anda hanya memberikan izin yang diperlukan peran untuk berinteraksi dengan AWS sumber daya untuk kasus penggunaan spesifik Anda.

Untuk informasi selengkapnya, lihat [Menghasilkan kebijakan berdasarkan aktivitas akses](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_generate-policy.html) di *Panduan Pengguna IAM*.

# Melihat dan memperbarui izin dalam peran eksekusi
<a name="permissions-executionrole-update"></a>

Topik ini mencakup bagaimana Anda dapat melihat dan memperbarui [peran eksekusi](lambda-intro-execution-role.md) fungsi Anda.

**Topics**
+ [

## Melihat peran eksekusi fungsi
](#view-execution-role)
+ [

## Memperbarui peran eksekusi fungsi
](#update-execution-role)

## Melihat peran eksekusi fungsi
<a name="view-execution-role"></a>

Untuk melihat peran eksekusi fungsi, gunakan konsol Lambda.

**Untuk melihat peran eksekusi fungsi (konsol)**

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

1. Pilih nama sebuah fungsi.

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

1. Di bawah **Peran eksekusi**, Anda dapat melihat peran yang saat ini digunakan sebagai peran eksekusi fungsi. Untuk kenyamanan, Anda dapat melihat semua sumber daya dan tindakan yang dapat diakses fungsi di bawah bagian **Ringkasan sumber daya**. Anda juga dapat memilih layanan dari daftar dropdown untuk melihat semua izin yang terkait dengan layanan tersebut.

## Memperbarui peran eksekusi fungsi
<a name="update-execution-role"></a>

Anda dapat menambahkan atau menghapus izin dari peran eksekusi fungsi kapan saja, atau mengonfigurasi fungsi Anda untuk menggunakan peran yang berbeda. Jika fungsi Anda memerlukan akses ke layanan atau sumber daya lain, Anda harus menambahkan izin yang diperlukan ke peran eksekusi.

Saat Anda menambahkan izin ke fungsi Anda, lakukan pembaruan sepele ke kode atau konfigurasinya juga. Ini memaksa instance menjalankan fungsi Anda, yang memiliki kredensialnya yang sudah ketinggalan zaman, untuk berhenti dan diganti.

Untuk memperbarui peran eksekusi fungsi, Anda dapat menggunakan konsol Lambda.

**Untuk memperbarui peran eksekusi fungsi (konsol)**

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

1. Pilih nama sebuah fungsi.

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

1. Di bawah **Peran eksekusi**, pilih **Edit**.

1. Jika Anda ingin memperbarui fungsi Anda untuk menggunakan peran yang berbeda sebagai peran eksekusi, pilih peran baru di menu tarik-turun di bawah Peran **yang ada**.
**catatan**  
Jika Anda ingin memperbarui izin dalam peran eksekusi yang ada, Anda hanya dapat melakukannya di konsol AWS Identity and Access Management (IAM).

   Jika Anda ingin membuat peran baru untuk digunakan sebagai peran eksekusi, pilih **Buat peran baru dari templat AWS kebijakan** di bawah **Peran eksekusi**. Kemudian, masukkan nama untuk peran baru Anda di bawah **Nama peran**, dan tentukan kebijakan apa pun yang ingin Anda lampirkan ke peran baru di bawah **Templat kebijakan**.

1. Pilih **Simpan**.

# Bekerja dengan kebijakan AWS terkelola dalam peran eksekusi
<a name="permissions-managed-policies"></a>

Kebijakan AWS terkelola berikut memberikan izin yang diperlukan untuk menggunakan fitur Lambda.


| Perubahan | Deskripsi | Tanggal | 
| --- | --- | --- | 
|  **[ AWSLambdaMSKExecutionPeran](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaMSKExecutionRole)** — Lambda menambahkan izin [kafka: DescribeCluster V2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters-clusterarn.html#v2-clusters-clusterarnget) ke kebijakan ini.  |  `AWSLambdaMSKExecutionRole`memberikan izin untuk membaca dan mengakses catatan dari kluster Amazon Managed Streaming for Apache Kafka (Amazon MSK), mengelola antarmuka ENIs jaringan elastis (), dan menulis ke Log. CloudWatch   |  Juni 17, 2022  | 
|  **[ AWSLambdaBasicExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaBasicExecutionRole`memberikan izin untuk mengunggah log ke. CloudWatch  |  14 Februari 2022  | 
|  **[ AWSLambdaDBExecutionPeran Dynamo](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaDynamoDBExecutionRole)** — Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaDynamoDBExecutionRole`memberikan izin untuk membaca catatan dari aliran Amazon DynamoDB dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 
|  **[ AWSLambdaKinesisExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaKinesisExecutionRole)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaKinesisExecutionRole`memberikan izin untuk membaca peristiwa dari aliran data Amazon Kinesis dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 
|  **[ AWSLambdaMSKExecutionPeran](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaMSKExecutionRole)** — Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaMSKExecutionRole`memberikan izin untuk membaca dan mengakses catatan dari kluster Amazon Managed Streaming for Apache Kafka (Amazon MSK), mengelola antarmuka ENIs jaringan elastis (), dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 
|  **[ AWSLambdaSQSQueueExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaSQSQueueExecutionRole`memberikan izin untuk membaca pesan dari antrian Amazon Simple Queue Service (Amazon SQS) dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 
|  **[ AWSLambdaVPCAccessExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaVPCAccessExecutionRole`memberikan izin untuk mengelola ENIs dalam VPC Amazon dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 
|  **[ AWSXRayDaemonWriteAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSXRayDaemonWriteAccess`memberikan izin untuk mengunggah data jejak ke X-Ray.  |  14 Februari 2022  | 
|  **[ CloudWatchLambdaInsightsExecutionRolePolicy](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `CloudWatchLambdaInsightsExecutionRolePolicy`memberikan izin untuk menulis metrik runtime ke Lambda Insights. CloudWatch   |  14 Februari 2022  | 
|  **[AmazonS3 - ObjectLambdaExecutionRolePolicy](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy)** Lambda mulai melacak perubahan pada kebijakan ini.  |  `AmazonS3ObjectLambdaExecutionRolePolicy`memberikan izin untuk berinteraksi dengan objek Amazon Simple Storage Service (Amazon S3) Lambda dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 

Untuk beberapa fitur, konsol Lambda mencoba menambahkan izin yang hilang ke peran eksekusi Anda dalam kebijakan yang dikelola pelanggan. Kebijakan ini dapat menjadi beberapa. Untuk menghindari pembuatan kebijakan tambahan, tambahkan kebijakan yang dikelola AWS yang relevan ke peran eksekusi Anda sebelum mengaktifkan fitur.

Saat Anda menggunakan [pemetaan sumber peristiwa](invocation-eventsourcemapping.md) untuk mengaktifkan fungsi Anda, Lambda menggunakan peran eksekusi untuk membaca data peristiwa. Misalnya, pemetaan sumber peristiwa untuk Kinesis membaca peristiwa dari aliran data dan mengirimnya ke fungsi Anda dalam beberapa batch. 

Saat layanan mengambil peran di akun Anda, Anda dapat menyertakan kunci konteks kondisi `aws:SourceArn` global `aws:SourceAccount` dan global dalam kebijakan kepercayaan peran untuk membatasi akses ke peran hanya pada permintaan yang dihasilkan oleh sumber daya yang diharapkan. Untuk informasi lebih lanjut, lihat [Pencegahan wakil kebingungan lintas layanan untuk AWS Security Token Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html#cross-service-confused-deputy-prevention).

Selain kebijakan AWS terkelola, konsol Lambda menyediakan templat untuk membuat kebijakan khusus dengan izin untuk kasus penggunaan tambahan. Saat Anda membuat fungsi di konsol Lambda, Anda dapat memilih untuk membuat peran eksekusi baru dengan izin dari satu templat atau lebih. Templat ini juga diterapkan secara otomatis ketika Anda membuat fungsi dari cetak biru, atau ketika Anda mengonfigurasi opsi yang memerlukan akses ke layanan lain. Contoh templat tersedia dalam [repositori GitHub](https://github.com/awsdocs/aws-lambda-developer-guide/tree/master/iam-policies) panduan ini.

# Menggunakan fungsi sumber ARN untuk mengontrol perilaku akses fungsi
<a name="permissions-source-function-arn"></a>

Biasanya kode fungsi Lambda Anda membuat permintaan API ke yang lain. Layanan AWS Untuk membuat permintaan ini, Lambda menghasilkan seperangkat kredensyal singkat dengan mengasumsikan peran eksekusi fungsi Anda. Kredensyal ini tersedia sebagai variabel lingkungan selama pemanggilan fungsi Anda. Saat bekerja dengan AWS SDKs, Anda tidak perlu memberikan kredensyal untuk SDK secara langsung dalam kode. Secara default, rantai penyedia kredensyal secara berurutan memeriksa setiap tempat di mana Anda dapat menyetel kredensyal dan memilih yang pertama tersedia—biasanya variabel lingkungan (,, dan). `AWS_ACCESS_KEY_ID` `AWS_SECRET_ACCESS_KEY` `AWS_SESSION_TOKEN`

Lambda menyuntikkan ARN fungsi sumber ke dalam konteks kredensyal jika permintaan tersebut adalah permintaan AWS API yang berasal dari dalam lingkungan eksekusi Anda. Lambda juga menyuntikkan ARN fungsi sumber untuk AWS permintaan API berikut yang dibuat Lambda atas nama Anda di luar lingkungan eksekusi Anda:


| Layanan | Tindakan | Alasan | 
| --- | --- | --- | 
| CloudWatch Log | CreateLogGroup, CreateLogStream, PutLogEvents |  Untuk menyimpan log ke dalam grup CloudWatch log Log  | 
| X-Ray | PutTraceSegments |  Untuk mengirim data jejak ke X-Ray  | 
| Amazon EFS | ClientMount |  Untuk menghubungkan fungsi Anda ke sistem file Amazon Elastic File System (Amazon EFS)  | 

Panggilan AWS API lain yang dilakukan Lambda di luar lingkungan eksekusi Anda atas nama Anda menggunakan peran eksekusi yang sama tidak mengandung ARN fungsi sumber. Contoh panggilan API tersebut di luar lingkungan eksekusi meliputi:
+ Panggilan ke AWS Key Management Service (AWS KMS) untuk mengenkripsi dan mendekripsi variabel lingkungan Anda secara otomatis.
+ Panggilan ke Amazon Elastic Compute Cloud (Amazon EC2) untuk membuat antarmuka ENIs jaringan elastis () untuk fungsi berkemampuan VPC.
+ [Panggilan ke Layanan AWS, seperti Amazon Simple Queue Service (Amazon SQS), untuk membaca dari sumber peristiwa yang disiapkan sebagai pemetaan sumber peristiwa.](invocation-eventsourcemapping.md)

Dengan fungsi sumber ARN dalam konteks kredensyal, Anda dapat memverifikasi apakah panggilan ke sumber daya Anda berasal dari kode fungsi Lambda tertentu. Untuk memverifikasi ini, gunakan kunci `lambda:SourceFunctionArn` kondisi dalam kebijakan berbasis identitas IAM atau [kebijakan kontrol layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCP).

**catatan**  
Anda tidak dapat menggunakan kunci `lambda:SourceFunctionArn` kondisi dalam kebijakan berbasis sumber daya.

Dengan kunci kondisi ini dalam kebijakan berbasis identitas Anda atau SCPs, Anda dapat menerapkan kontrol keamanan untuk tindakan API yang dibuat kode fungsi Anda ke yang lain. Layanan AWS Ini memiliki beberapa aplikasi keamanan utama, seperti membantu Anda mengidentifikasi sumber kebocoran kredensyal.

**catatan**  
Kunci `lambda:SourceFunctionArn` kondisi berbeda dari tombol `lambda:FunctionArn` dan `aws:SourceArn` kondisi. Kunci `lambda:FunctionArn` kondisi hanya berlaku untuk [pemetaan sumber peristiwa](invocation-eventsourcemapping.md) dan membantu menentukan fungsi mana yang dapat dipanggil sumber acara Anda. Kunci `aws:SourceArn` kondisi hanya berlaku untuk kebijakan di mana fungsi Lambda Anda adalah sumber daya target, dan membantu menentukan sumber lain Layanan AWS dan sumber daya mana yang dapat menjalankan fungsi tersebut. Kunci `lambda:SourceFunctionArn` kondisi dapat diterapkan pada kebijakan berbasis identitas atau SCP apa pun untuk menentukan fungsi Lambda tertentu yang memiliki izin untuk melakukan panggilan API tertentu ke sumber daya lain. AWS 

Untuk digunakan `lambda:SourceFunctionArn` dalam polis Anda, sertakan sebagai syarat dengan salah satu operator [kondisi ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_ARN). Nilai kunci harus berupa ARN yang valid.

Misalnya, misalkan kode fungsi Lambda Anda membuat `s3:PutObject` panggilan yang menargetkan bucket Amazon S3 tertentu. Anda mungkin ingin mengizinkan hanya satu fungsi Lambda tertentu untuk `s3:PutObject` mengakses bucket itu. Dalam hal ini, peran eksekusi fungsi Anda harus memiliki kebijakan yang dilampirkan yang terlihat seperti ini:

**Example kebijakan yang memberikan akses fungsi Lambda tertentu ke sumber daya Amazon S3**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ExampleSourceFunctionArn",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::lambda_bucket/*",
            "Condition": {
                "ArnEquals": {
                    "lambda:SourceFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:source_lambda"
                }
            }
        }
    ]
}
```

Kebijakan ini hanya mengizinkan `s3:PutObject` akses jika sumbernya adalah fungsi Lambda dengan ARN. `arn:aws:lambda:us-east-1:123456789012:function:source_lambda` Kebijakan ini tidak mengizinkan `s3:PutObject` akses ke identitas panggilan lainnya. Ini benar bahkan jika fungsi atau entitas yang berbeda membuat `s3:PutObject` panggilan dengan peran eksekusi yang sama.

**catatan**  
Kunci `lambda:SourceFunctionARN` kondisi tidak mendukung versi fungsi Lambda atau alias fungsi. Jika Anda menggunakan ARN untuk versi atau alias fungsi tertentu, fungsi Anda tidak akan memiliki izin untuk mengambil tindakan yang Anda tentukan. Pastikan untuk menggunakan ARN yang tidak memenuhi syarat untuk fungsi Anda tanpa versi atau akhiran alias.

Anda juga dapat menggunakan `lambda:SourceFunctionArn` dalam SCPs. Misalnya, Anda ingin membatasi akses ke bucket ke kode fungsi Lambda tunggal atau panggilan dari Amazon Virtual Private Cloud (VPC) tertentu. SCP berikut menggambarkan hal ini.

**Example kebijakan yang menolak akses ke Amazon S3 dalam kondisi tertentu**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:*"
            ],
            "Resource": "arn:aws:s3:::lambda_bucket/*",
            "Effect": "Deny",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:SourceVpc": [
                        "vpc-12345678"
                    ]
                }
            }
        },
        {
            "Action": [
                "s3:*"
            ],
            "Resource": "arn:aws:s3:::lambda_bucket/*",
            "Effect": "Deny",
            "Condition": {
                "ArnNotEqualsIfExists": {
                    "lambda:SourceFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:source_lambda"
                }
            }
        }
    ]
}
```

Kebijakan ini menolak semua tindakan S3 kecuali berasal dari fungsi Lambda tertentu dengan ARN`arn:aws:lambda:*:123456789012:function:source_lambda`, atau kecuali berasal dari VPC yang ditentukan. `StringNotEqualsIfExists`Operator memberitahu IAM untuk memproses kondisi ini hanya jika `aws:SourceVpc` kunci ada dalam permintaan. Demikian pula, IAM menganggap `ArnNotEqualsIfExists` operator hanya jika `lambda:SourceFunctionArn` ada.

# Memberikan AWS entitas lain akses ke fungsi Lambda Anda
<a name="permissions-granting-access"></a>

Untuk memberikan izin lain Akun AWS, organisasi, dan layanan untuk mengakses sumber daya Lambda Anda, Anda memiliki beberapa opsi:
+ Anda dapat menggunakan [kebijakan berbasis identitas](access-control-identity-based.md) untuk memberi pengguna lain akses ke sumber daya Lambda Anda. Kebijakan berbasis identitas dapat berlaku untuk pengguna secara langsung, atau untuk kelompok dan peran yang terkait dengan pengguna.
+ Anda dapat menggunakan [kebijakan berbasis sumber daya](access-control-resource-based.md) untuk memberikan akun dan Layanan AWS izin lain untuk mengakses sumber daya Lambda Anda. Saat pengguna mencoba mengakses sumber daya Lambda, Lambda mempertimbangkan kebijakan berbasis identitas pengguna dan kebijakan berbasis sumber daya. Saat AWS layanan seperti Amazon Simple Storage Service (Amazon S3) memanggil fungsi Lambda Anda, Lambda hanya mempertimbangkan kebijakan berbasis sumber daya.
+ Anda dapat menggunakan model [kontrol akses berbasis atribut (ABAC) untuk mengontrol](attribute-based-access-control.md) akses ke fungsi Lambda Anda. Dengan ABAC, Anda dapat melampirkan tag ke fungsi Lambda, meneruskannya dalam permintaan API tertentu, atau melampirkannya ke prinsipal IAM yang membuat permintaan. Tentukan tag yang sama dalam elemen kondisi kebijakan IAM untuk mengontrol akses fungsi.

Untuk membantu Anda menyempurnakan izin untuk akses hak istimewa paling sedikit, Lambda menyediakan beberapa ketentuan tambahan yang dapat Anda sertakan dalam kebijakan Anda. Lihat informasi yang lebih lengkap di [Menyesuaikan bagian Sumber Daya dan Ketentuan kebijakan](lambda-api-permissions-ref.md).

# Kebijakan IAM berbasis identitas untuk Lambda
<a name="access-control-identity-based"></a>

Anda dapat menggunakan kebijakan berbasis identitas di AWS Identity and Access Management (IAM) untuk memberikan pengguna di akun Anda akses ke Lambda. Kebijakan berbasis identitas dapat diterapkan pada pengguna, grup pengguna, atau peran. Anda juga dapat memberi pengguna di akun lain izin untuk berperan di akun Anda dan mengakses sumber daya Lambda Anda.

Lambda menyediakan kebijakan AWS terkelola yang memberikan akses ke tindakan API Lambda dan, dalam beberapa kasus, akses ke AWS layanan lain yang digunakan untuk mengembangkan dan mengelola sumber daya Lambda. Lambda memperbarui kebijakan terkelola ini sesuai kebutuhan, untuk memastikan bahwa pengguna Anda memiliki akses ke fitur baru ketika dirilis.
+ [AWSLambda\$1FullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambda_FullAccess.html)— Memberikan akses penuh ke tindakan Lambda dan layanan AWS lain yang digunakan untuk mengembangkan dan memelihara sumber daya Lambda.
+ [AWSLambda\$1ReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambda_ReadOnlyAccess.html)— Memberikan akses hanya-baca ke sumber daya Lambda.
+ [AWSLambdaPeran](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaRole.html) - Memberikan izin untuk memanggil fungsi Lambda.

AWS kebijakan terkelola memberikan izin untuk tindakan API tanpa membatasi fungsi atau lapisan Lambda yang dapat dimodifikasi pengguna. Untuk kontrol yang lebih cermat, Anda dapat membuat kebijakan Anda sendiri yang membatasi ruang lingkup izin pengguna.

**Topics**
+ [

# Memberikan pengguna akses ke fungsi Lambda
](permissions-user-function.md)
+ [

# Memberikan pengguna akses ke lapisan Lambda
](permissions-user-layer.md)

# Memberikan pengguna akses ke fungsi Lambda
<a name="permissions-user-function"></a>

Gunakan [kebijakan berbasis identitas](access-control-identity-based.md) untuk mengizinkan pengguna, grup pengguna, atau peran menjalankan operasi pada fungsi Lambda. 

**catatan**  
Untuk fungsi yang didefinisikan sebagai image kontainer, izin pengguna untuk mengakses gambar harus dikonfigurasi di Amazon Elastic Container Registry (Amazon ECR). Sebagai contoh, lihat Kebijakan [repositori Amazon ECR](images-create.md#configuration-images-permissions).

Berikut ini adalah contoh kebijakan izin dengan lingkup terbatas. Ini memungkinkan pengguna membuat dan mengelola fungsi Lambda yang diberi nama dengan awalan yang ditentukan (`intern-`), dan dikonfigurasi dengan peran eksekusi yang ditunjuk.

**Example Kebijakan pengembangan fungsi**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadOnlyPermissions",
            "Effect": "Allow",
            "Action": [
                "lambda:GetAccountSettings",
                "lambda:GetEventSourceMapping",
                "lambda:GetFunction",
                "lambda:GetFunctionConfiguration",
                "lambda:GetFunctionCodeSigningConfig",
                "lambda:GetFunctionConcurrency",
                "lambda:ListEventSourceMappings",
                "lambda:ListFunctions",
                "lambda:ListTags",
                "iam:ListRoles"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DevelopFunctions",
            "Effect": "Allow",
            "NotAction": [
                "lambda:AddPermission",
                "lambda:PutFunctionConcurrency"
            ],
            "Resource": "arn:aws:lambda:*:*:function:intern-*"
        },
        {
            "Sid": "DevelopEventSourceMappings",
            "Effect": "Allow",
            "Action": [
                "lambda:DeleteEventSourceMapping",
                "lambda:UpdateEventSourceMapping",
                "lambda:CreateEventSourceMapping"
            ],
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*"
                }
            }
        },
        {
            "Sid": "PassExecutionRole",
            "Effect": "Allow",
            "Action": [
                "iam:ListRolePolicies",
                "iam:ListAttachedRolePolicies",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:PassRole",
                "iam:SimulatePrincipalPolicy"
            ],
            "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role"
        },
        {
            "Sid": "ViewLogs",
            "Effect": "Allow",
            "Action": [
                "logs:*"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*"
        }
    ]
}
```

Izin dalam kebijakan disusun menjadi pernyataan berdasarkan [sumber daya dan kondisi](lambda-api-permissions-ref.md) yang mereka dukung.
+ `ReadOnlyPermissions` – Konsol Lambda menggunakan izin ini saat Anda menelusuri dan melihat fungsi. Mereka tidak mendukung pola atau kondisi sumber daya.

  ```
              "Action": [
                  "lambda:GetAccountSettings",
                  "lambda:GetEventSourceMapping",
                  "lambda:GetFunction",
                  "lambda:GetFunctionConfiguration",           
                  "lambda:GetFunctionCodeSigningConfig",
                  "lambda:GetFunctionConcurrency",                
                  "lambda:ListEventSourceMappings",
                  "lambda:ListFunctions",      
                  "lambda:ListTags",
                  "iam:ListRoles"
              ],
              "Resource": "*"
  ```
+ `DevelopFunctions`— Gunakan tindakan Lambda apa pun yang beroperasi pada fungsi yang diawali dengan`intern-`, kecuali dan. `AddPermission` `PutFunctionConcurrency` `AddPermission`memodifikasi [kebijakan berbasis sumber daya](access-control-resource-based.md) pada fungsi dan dapat memiliki implikasi keamanan. `PutFunctionConcurrency`cadangan kapasitas penskalaan untuk suatu fungsi dan dapat mengambil kapasitas dari fungsi lain.

  ```
              "NotAction": [
                  "lambda:AddPermission",
                  "lambda:PutFunctionConcurrency"
              ],
              "Resource": "arn:aws:lambda:*:*:function:intern-*"
  ```
+ `DevelopEventSourceMappings` – Mengelola pemetaan sumber peristiwa pada fungsi yang diawali dengan `intern-`. Tindakan ini beroperasi pada pemetaan sumber peristiwa, tetapi Anda dapat membatasinya menurut fungsi dengan *syarat*.

  ```
              "Action": [
                  "lambda:DeleteEventSourceMapping",
                  "lambda:UpdateEventSourceMapping",
                  "lambda:CreateEventSourceMapping"
              ],
              "Resource": "*",
              "Condition": {
                  "StringLike": {
                      "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*"
                  }
              }
  ```
+ `PassExecutionRole` – Lihat dan teruskan hanya peran bernama `intern-lambda-execution-role`, yang harus dibuat dan dikelola oleh pengguna dengan izin IAM. `PassRole` digunakan saat Anda menetapkan peran eksekusi ke fungsi.

  ```
              "Action": [
                  "iam:ListRolePolicies",
                  "iam:ListAttachedRolePolicies",
                  "iam:GetRole",
                  "iam:GetRolePolicy",
                  "iam:PassRole",
                  "iam:SimulatePrincipalPolicy"
              ],
              "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role"
  ```
+ `ViewLogs`— Gunakan CloudWatch Log untuk melihat log untuk fungsi yang diawali dengan`intern-`.

  ```
              "Action": [
                  "logs:*"
              ],
              "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*"
  ```

Kebijakan ini memungkinkan pengguna untuk memulai dengan Lambda, tanpa menempatkan sumber daya pengguna lain dalam risiko. Itu tidak memungkinkan pengguna untuk mengonfigurasi fungsi yang akan dipicu oleh atau memanggil AWS layanan lain, yang memerlukan izin IAM yang lebih luas. Ini juga tidak termasuk izin untuk layanan yang tidak mendukung kebijakan dengan cakupan terbatas, seperti CloudWatch dan X-Ray. Gunakan kebijakan hanya-baca untuk layanan ini agar pengguna dapat mengakses data metrik dan jejak.

Saat Anda mengonfigurasi pemicu untuk fungsi Anda, Anda memerlukan akses untuk menggunakan AWS layanan yang memanggil fungsi Anda. Misalnya, untuk mengonfigurasi pemicu Amazon S3, Anda memerlukan izin untuk menggunakan tindakan Amazon S3 yang mengelola pemberitahuan bucket. Banyak dari izin ini disertakan dalam kebijakan yang dikelola [AWSLambda\$1FullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambda_FullAccess.html).

# Memberikan pengguna akses ke lapisan Lambda
<a name="permissions-user-layer"></a>

Gunakan [kebijakan berbasis identitas](access-control-identity-based.md) untuk memungkinkan pengguna, grup pengguna, atau peran melakukan operasi pada lapisan Lambda. Kebijakan berikut memberikan izin pengguna untuk membuat lapisan dan menggunakan mereka dengan fungsi. Pola sumber daya memungkinkan pengguna untuk bekerja di setiap Wilayah AWS dan dengan versi lapisan apa pun, selama nama lapisan dimulai dengan`test-`.

**Example kebijakan pengembangan lapisan**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PublishLayers",
            "Effect": "Allow",
            "Action": [
                "lambda:PublishLayerVersion"
            ],
            "Resource": "arn:aws:lambda:*:*:layer:test-*"
        },
        {
            "Sid": "ManageLayerVersions",
            "Effect": "Allow",
            "Action": [
                "lambda:GetLayerVersion",
                "lambda:DeleteLayerVersion"
            ],
            "Resource": "arn:aws:lambda:*:*:layer:test-*:*"
        }
    ]
}
```

Anda juga dapat menerapkan penggunaan lapisan selama pembuatan fungsi dan konfigurasi dengan kondisi `lambda:Layer`. Misalnya, Anda dapat mencegah pengguna dari menggunakan lapisan yang diterbitkan oleh akun lain. Kebijakan berikut ini menambahkan kondisi ke `CreateFunction` dan `UpdateFunctionConfiguration` tindakan untuk mewajibkan setiap lapisan yang ditentukan berasal dari akun `123456789012`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfigureFunctions",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:UpdateFunctionConfiguration"
            ],
            "Resource": "*",
            "Condition": {
                "ForAllValues:StringLike": {
                    "lambda:Layer": [
                        "arn:aws:lambda:*:123456789012:layer:*:*"
                    ]
                }
            }
        }
    ]
}
```

------

Untuk memastikan kondisi berlaku, verifikasikan bahwa tidak ada pernyataan lain yang memberikan izin pengguna atas tindakan ini.

# Melihat kebijakan IAM berbasis sumber daya di Lambda
<a name="access-control-resource-based"></a>

Lambda mendukung kebijakan izin berbasis sumber daya untuk fungsi dan lapisan Lambda. [Anda dapat menggunakan kebijakan berbasis sumber daya untuk memberikan akses ke [AWS akun, [organisasi](permissions-function-organization.md), atau layanan](permissions-function-cross-account.md) lain.](permissions-function-services.md) Kebijakan berbasis sumber daya berlaku untuk satu versi fungsi, versi, alias, atau lapisan. 

------
#### [ Console ]

**Untuk menampilkan kebijakan fungsi berbasis sumber daya**

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

1. Pilih fungsi.

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

1. Gulir ke bawah ke **Kebijakan berbasis sumber daya**, lalu pilih **Lihat dokumen kebijakan**. Kebijakan berbasis sumber daya menunjukkan izin yang diterapkan saat akun atau AWS layanan lain mencoba mengakses fungsi tersebut. Contoh berikut menunjukkan pernyataan yang memungkinkan Amazon S3 memicu fungsi bernama `my-function` untuk bucket bernama `amzn-s3-demo-bucket` dalam akun `123456789012`.  
**Example kebijakan berbasis sumber daya**    
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "default",
       "Statement": [
           {
               "Sid": "lambda-allow-s3-my-function",
               "Effect": "Allow",
               "Principal": {
                 "Service": "s3.amazonaws.com"
               },
               "Action": "lambda:InvokeFunction",
               "Resource":  "arn:aws:lambda:us-east-2:123456789012:function:my-function",
               "Condition": {
                 "StringEquals": {
                   "AWS:SourceAccount": "123456789012"
                 },
                 "ArnLike": {
                   "AWS:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
                 }
               }
           }
        ]
   }
   ```

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

Untuk melihat kebijakan berbasis sumber daya dari fungsi, gunakan perintah `get-policy`.

```
aws lambda get-policy \
  --function-name my-function \
  --output text
```

Anda akan melihat output berikut:

****  

```
{"Version":"2012-10-17",		 	 	 "Id":"default","Statement":[{"Sid":"sns","Effect":"Allow","Principal":{"Service":"s3.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-2:123456789012:function:my-function","Condition":{"ArnLike":{"AWS:SourceArn":"arn:aws:sns:us-east-2:123456789012:lambda*"}}}]}
```

Untuk versi dan alias, tambahkan nomor versi atau alias di akhir nama fungsi.

```
aws lambda get-policy --function-name my-function:PROD
```

Untuk menghapus izin dari fungsi, gunakan `remove-permission`.

```
aws lambda remove-permission \
  --function-name example \
  --statement-id sns
```

Gunakan perintah `get-layer-version-policy` untuk melihat izin pada lapisan.

```
aws lambda get-layer-version-policy \
  --layer-name my-layer \
  --version-number 3 \
  --output text
```

Anda akan melihat output berikut:

```
b0cd9796-d4eb-4564-939f-de7fe0b42236    {"Sid":"engineering-org","Effect":"Allow","Principal":"*","Action":"lambda:GetLayerVersion","Resource":"arn:aws:lambda:us-west-2:123456789012:layer:my-layer:3","Condition":{"StringEquals":{"aws:PrincipalOrgID":"o-t194hfs8cz"}}}"
```

Gunakan `remove-layer-version-permission` untuk menghapus pernyataan dari kebijakan.

```
aws lambda remove-layer-version-permission --layer-name my-layer --version-number 3 --statement-id engineering-org
```

------

## Tindakan API yang didukung
<a name="permissions-resource-api"></a>

Tindakan API Lambda berikut mendukung kebijakan berbasis sumber daya:
+ [CreateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_CreateAlias.html)
+ [DeleteAlias](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteAlias.html)
+ [DeleteFunction](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteFunction.html)
+ [DeleteFunctionConcurrency](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteFunctionConcurrency.html)
+ [DeleteFunctionEventInvokeConfig](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteFunctionEventInvokeConfig.html)
+ [DeleteProvisionedConcurrencyConfig](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteProvisionedConcurrencyConfig.html)
+ [GetAlias](https://docs.aws.amazon.com/lambda/latest/api/API_GetAlias.html)
+ [GetFunction](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html)
+ [GetFunctionConcurrency](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionConcurrency.html)
+ [GetFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionConfiguration.html)
+ [GetFunctionEventInvokeConfig](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionEventInvokeConfig.html)
+ [GetPolicy](https://docs.aws.amazon.com/lambda/latest/api/API_GetPolicy.html)
+ [GetProvisionedConcurrencyConfig](https://docs.aws.amazon.com/lambda/latest/api/API_GetProvisionedConcurrencyConfig.html)
+ [Memohon](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)
+ [InvokeFunctionUrl](urls-auth.md)(hanya izin)
+ [ListAliases](https://docs.aws.amazon.com/lambda/latest/api/API_ListAliases.html)
+ [ListFunctionEventInvokeConfigs](https://docs.aws.amazon.com/lambda/latest/api/API_ListFunctionEventInvokeConfigs.html)
+ [ListProvisionedConcurrencyConfigs](https://docs.aws.amazon.com/lambda/latest/api/API_ListProvisionedConcurrencyConfigs.html)
+ [ListTags](https://docs.aws.amazon.com/lambda/latest/api/API_ListTags.html)
+ [ListVersionsByFunction](https://docs.aws.amazon.com/lambda/latest/api/API_ListVersionsByFunction.html)
+ [PublishVersion](https://docs.aws.amazon.com/lambda/latest/api/API_PublishVersion.html)
+ [PutFunctionConcurrency](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionConcurrency.html)
+ [PutFunctionEventInvokeConfig](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html)
+ [PutProvisionedConcurrencyConfig](https://docs.aws.amazon.com/lambda/latest/api/API_PutProvisionedConcurrencyConfig.html)
+ [TagResource](https://docs.aws.amazon.com/lambda/latest/api/API_TagResource.html)
+ [UntagResource](https://docs.aws.amazon.com/lambda/latest/api/API_UntagResource.html)
+ [UpdateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateAlias.html)
+ [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)
+ [UpdateFunctionEventInvokeConfig](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionEventInvokeConfig.html)

# Memberikan akses fungsi Lambda ke Layanan AWS
<a name="permissions-function-services"></a>

Saat Anda [menggunakan AWS layanan untuk menjalankan fungsi, Anda](lambda-services.md) memberikan izin dalam pernyataan tentang kebijakan berbasis sumber daya. Anda dapat menerapkan pernyataan ke seluruh fungsi, atau membatasi pernyataan ke satu versi atau alias.

**catatan**  
Saat Anda menambahkan pemicu ke fungsi Anda dengan konsol Lambda, konsol memperbarui kebijakan berbasis sumber daya fungsi untuk memungkinkan layanan memicunya. Untuk memberikan izin ke akun atau layanan lain yang tidak tersedia di konsol Lambda, Anda dapat menggunakan AWS CLI.

Tambahkan pernyataan dengan perintah [add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html). Pernyataan kebijakan berbasis sumber daya yang paling sederhana memungkinkan layanan untuk memicu fungsi. Perintah berikut memberikan izin Amazon Simple Notification Service untuk memanggil fungsi bernama. `my-function`

```
aws lambda add-permission \
  --function-name my-function \
  --action lambda:InvokeFunction \
  --statement-id sns \
  --principal sns.amazonaws.com \
  --output text
```

Anda akan melihat output berikut:

```
{"Sid":"sns","Effect":"Allow","Principal":{"Service":"sns.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-2:123456789012:function:my-function"}
```

Ini memungkinkan Amazon SNS memanggil tindakan [Invoke](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) API pada fungsi, tetapi tidak membatasi topik Amazon SNS yang memicu pemanggilan. Untuk memastikan fungsi Anda hanya di-invokasi oleh sumber daya tertentu, tentukan Amazon Resource Name (ARN) sumber daya dengan opsi `source-arn`. Perintah berikut ini hanya memungkinkan Amazon SNS untuk melakukan invokasi fungsi untuk berlangganan ke topik bernama `my-topic`.

```
aws lambda add-permission \
  --function-name my-function \
  --action lambda:InvokeFunction \
  --statement-id sns-my-topic \
  --principal sns.amazonaws.com \
  --source-arn arn:aws:sns:us-east-2:123456789012:my-topic
```

Beberapa layanan dapat melakukan invokasi fungsi di akun lain. Jika Anda menentukan ARN sumber yang berisi ID akun Anda di dalamnya, hal tersebut bukanlah masalah. Namun, untuk Amazon S3, sumbernya adalah bucket dengan ARN tanpa ID akun di dalamnya. Anda mungkin bisa menghapus bucket, dan akun lain dapat membuat bucket dengan nama yang sama. Gunakan opsi `source-account` dengan ID akun Anda untuk memastikan hanya sumber daya di akun Anda yang dapat melakukan invokasi fungsi.

```
aws lambda add-permission \
  --function-name my-function \
  --action lambda:InvokeFunction \
  --statement-id s3-account \
  --principal s3.amazonaws.com \
  --source-arn arn:aws:s3:::amzn-s3-demo-bucket \
  --source-account 123456789012
```

# Memberikan akses fungsi ke organisasi
<a name="permissions-function-organization"></a>

Untuk memberikan izin ke organisasi di [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html), tentukan ID organisasi sebagai. `principal-org-id` Perintah [izin tambahan](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) berikut memberikan akses pemanggilan ke semua pengguna dalam organisasi. `o-a1b2c3d4e5f`

```
aws lambda add-permission \
  --function-name example \
  --statement-id PrincipalOrgIDExample \
  --action lambda:InvokeFunction \
  --principal * \
  --principal-org-id o-a1b2c3d4e5f
```

**catatan**  
Dalam perintah ini, `Principal` adalah`*`. Ini berarti bahwa semua pengguna di organisasi `o-a1b2c3d4e5f` mendapatkan izin pemanggilan fungsi. Jika Anda menentukan peran Akun AWS atau sebagai`Principal`, maka hanya prinsipal yang mendapatkan izin pemanggilan fungsi, tetapi hanya jika mereka juga merupakan bagian dari organisasi. `o-a1b2c3d4e5f`

Perintah ini membuat kebijakan berbasis sumber daya yang terlihat seperti berikut:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PrincipalOrgIDExample",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-2:123456789012:function:example",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "o-a1b2c3d4e5f"
                }
            }
        }
    ]
}
```

------

Untuk informasi selengkapnya, lihat [aws: PrincipalOrg ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) di *panduan pengguna IAM*.

# Memberikan akses fungsi Lambda ke akun lain
<a name="permissions-function-cross-account"></a>

[Untuk berbagi fungsi dengan yang lain Akun AWS, tambahkan pernyataan izin lintas akun ke kebijakan berbasis sumber daya fungsi.](access-control-resource-based.md) Jalankan perintah [add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) dan tentukan ID akun sebagai. `principal` Contoh berikut memberi izin `111122223333` akun untuk memanggil `my-function` dengan alias `prod`.

```
aws lambda add-permission \
  --function-name my-function:prod \
  --statement-id xaccount \
  --action lambda:InvokeFunction \
  --principal 111122223333 \
  --output text
```

Anda akan melihat output berikut:

```
{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789012:function:my-function"}
```

Kebijakan berbasis sumber daya memberikan izin bagi akun lain untuk mengakses fungsi, tetapi tidak mengizinkan pengguna dalam akun tersebut untuk melebihi izin mereka. Pengguna di akun lain harus memiliki [izin pengguna](access-control-identity-based.md) yang sesuai untuk menggunakan API Lambda.

Untuk membatasi akses ke pengguna atau peran di akun lain, tentukan ARN lengkap dari identitas sebagai prinsip. Misalnya, `arn:aws:iam::123456789012:user/developer`.

[Alias](configuration-aliases.md) membatasi versi mana yang dapat dilakukan invokasi oleh akun lain. Ini mengharuskan akun lain menyertakan alias dalam fungsi ARN.

```
aws lambda invoke \
  --function-name arn:aws:lambda:us-east-2:123456789012:function:my-function:prod out
```

Anda akan melihat output berikut:

```
{
    "StatusCode": 200,
    "ExecutedVersion": "1"
}
```

Pemilik fungsi kemudian dapat memperbarui alias untuk menunjuk ke versi baru tanpa pemanggil perlu mengubah cara melakukan invokasi fungsi Anda. Ini memastikan akun lain tidak perlu mengubah kodenya untuk menggunakan versi baru, dan memiliki izin untuk melakukan invokasi versi fungsi yang terkait dengan alias.

Anda dapat memberikan akses lintas akun untuk sebagian besar tindakan API yang beroperasi pada fungsi yang sudah ada. Misalnya, Anda dapat memberikan akses ke `lambda:ListAliases` agar akun bisa mendapatkan daftar alias, atau `lambda:GetFunction` agar mengunduh kode fungsi Anda. Tambahkan setiap izin secara terpisah, atau gunakan `lambda:*` untuk memberikan akses ke semua tindakan untuk fungsi tertentu.

Untuk memberi akun lain izin untuk beberapa fungsi, atau untuk tindakan yang tidak beroperasi pada fungsi, kami sarankan Anda menggunakan [peran IAM](access-control-identity-based.md).

# Memberikan akses lapisan Lambda ke akun lain
<a name="permissions-layer-cross-account"></a>

[Untuk berbagi layer dengan yang lain Akun AWS, tambahkan pernyataan izin lintas akun ke kebijakan berbasis sumber daya lapisan.](access-control-resource-based.md) Jalankan [add-layer-version-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-layer-version-permission.html)perintah dan tentukan ID akun sebagai`principal`. Dalam setiap pernyataan, Anda dapat memberikan izin ke satu akun, semua akun, atau organisasi di [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html).

Contoh berikut memberikan akun 111122223333 akses ke versi 2 lapisan. `bash-runtime`

```
aws lambda add-layer-version-permission \
  --layer-name bash-runtime \
  --version-number 2 \  
  --statement-id xaccount \
  --action lambda:GetLayerVersion \
  --principal 111122223333 \
  --output text
```

Anda akan melihat output yang serupa dengan yang berikut:

```
{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:GetLayerVersion","Resource":"arn:aws:lambda:us-east-1:123456789012:layer:bash-runtime:2"}
```

Izin hanya berlaku untuk satu versi lapisan. Ulangi proses ini tiap kali Anda membuat versi lapisan baru.

Untuk memberikan izin ke semua akun dalam suatu [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)organisasi, gunakan `organization-id` opsi ini. Contoh berikut memberikan semua akun dalam organisasi `o-t194hfs8cz` izin untuk menggunakan versi 3 dari. `my-layer`

```
aws lambda add-layer-version-permission \
  --layer-name my-layer \
  --version-number 3 \
  --statement-id engineering-org \
  --principal '*' \
  --action lambda:GetLayerVersion \
  --organization-id o-t194hfs8cz \
  --output text
```

Anda akan melihat output berikut:

```
{"Sid":"engineering-org","Effect":"Allow","Principal":"*","Action":"lambda:GetLayerVersion","Resource":"arn:aws:lambda:us-east-2:123456789012:layer:my-layer:3","Condition":{"StringEquals":{"aws:PrincipalOrgID":"o-t194hfs8cz"}}}"
```

Untuk memberikan izin ke beberapa akun atau organisasi, Anda harus menambahkan beberapa pernyataan.

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

Dengan [kontrol akses berbasis atribut (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html), Anda dapat menggunakan tag untuk mengontrol akses ke sumber daya Lambda Anda. Anda dapat melampirkan tag ke sumber daya Lambda tertentu, melampirkannya ke permintaan API tertentu, atau melampirkannya ke prinsipal AWS Identity and Access Management (IAM) yang membuat permintaan. Untuk informasi selengkapnya tentang cara AWS memberikan akses berbasis atribut, lihat [Mengontrol akses ke AWS sumber daya menggunakan tag di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) Pengguna *IAM*.

Anda dapat menggunakan ABAC untuk [memberikan hak istimewa paling sedikit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) tanpa menentukan pola Nama Sumber Daya Amazon (ARN) atau ARN dalam kebijakan IAM. Sebagai gantinya, 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. Penskalaan lebih mudah dengan ABAC karena Anda tidak perlu memperbarui kebijakan IAM saat membuat sumber daya baru. Sebagai gantinya, tambahkan tag ke sumber daya baru untuk mengontrol akses.

Di Lambda, tag bekerja pada sumber daya berikut:
+ Fungsi—Untuk informasi lebih lanjut tentang fungsi penandaan lihat,. [Menggunakan tag pada fungsi Lambda](configuration-tags.md)
+ Konfigurasi penandatanganan kode—Untuk informasi selengkapnya tentang menandai konfigurasi penandatanganan kode, lihat. [Menggunakan tag pada konfigurasi penandatanganan kode](tags-csc.md)
+ Pemetaan sumber acara—Untuk informasi selengkapnya tentang menandai pemetaan sumber peristiwa, lihat. [Menggunakan tag pada pemetaan sumber acara](tags-esm.md)

Tag tidak didukung untuk lapisan.

Anda dapat menggunakan kunci kondisi berikut untuk menulis aturan kebijakan IAM berdasarkan tag:
+ [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag): Kontrol akses berdasarkan tag yang dilampirkan ke sumber daya Lambda.
+ [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag): Memerlukan tag untuk hadir dalam permintaan, seperti saat membuat fungsi baru.
+ [aws: PrincipalTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag) [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_users.html)
+  [aws: TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys): Kontrol apakah kunci tag tertentu dapat digunakan dalam permintaan.

 Anda hanya dapat menentukan kondisi untuk tindakan yang mendukungnya. Untuk daftar kondisi yang didukung oleh setiap tindakan Lambda, lihat [Kunci tindakan, sumber daya, dan kondisi AWS Lambda di Referensi](https://docs.aws.amazon.com//service-authorization/latest/reference/list_awslambda.html) Otorisasi Layanan. Untuk dukungan **aws: ResourceTag /tag-key**, lihat “Jenis sumber daya yang ditentukan oleh.” AWS Lambda Untuk **aws: RequestTag /tag-key** dan **aws: TagKeys** support, lihat “Actions defined by.” AWS Lambda

**Topics**
+ [

# Amankan fungsi Anda dengan tag
](attribute-based-access-control-example.md)

# Amankan fungsi Anda dengan tag
<a name="attribute-based-access-control-example"></a>

Langkah-langkah berikut menunjukkan salah satu cara untuk mengatur izin untuk fungsi menggunakan ABAC. Dalam skenario contoh ini, Anda akan membuat empat kebijakan izin IAM. Kemudian, Anda akan melampirkan kebijakan ini ke peran IAM baru. Terakhir, Anda akan membuat pengguna IAM dan memberikan izin kepada pengguna tersebut untuk mengambil peran baru.

**Topics**
+ [

## Prasyarat
](#abac-prerequisites)
+ [

## Langkah 1: Memerlukan tag pada fungsi baru
](#require-tag-on-create)
+ [

## Langkah 2: Izinkan tindakan berdasarkan tag yang dilampirkan ke fungsi Lambda dan prinsip IAM
](#restrict-actions-function-tags)
+ [

## Langkah 3: Berikan izin daftar
](#abac-list-permissions)
+ [

## Langkah 4: Berikan izin IAM
](#abac-iam-permissions)
+ [

## Langkah 5: Buat peran IAM
](#abac-create-role)
+ [

## Langkah 6: Buat pengguna IAM
](#abac-create-user)
+ [

## Langkah 7: Uji izin
](#abac-test)
+ [

## Langkah 8: Bersihkan sumber daya Anda
](#abac-clean-up)

## Prasyarat
<a name="abac-prerequisites"></a>

Pastikan Anda memiliki peran [eksekusi Lambda](lambda-intro-execution-role.md). Anda akan menggunakan peran ini saat memberikan izin IAM dan saat membuat fungsi Lambda.

## Langkah 1: Memerlukan tag pada fungsi baru
<a name="require-tag-on-create"></a>

Saat menggunakan ABAC dengan Lambda, ini adalah praktik terbaik untuk mengharuskan semua fungsi memiliki tag. Ini membantu memastikan bahwa kebijakan izin ABAC Anda berfungsi seperti yang diharapkan.

[Buat kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) yang mirip dengan contoh berikut. Kebijakan ini menggunakan kunci TagKeys kondisi [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag), dan [aws:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) untuk mengharuskan fungsi baru dan prinsipal IAM yang membuat fungsi keduanya memiliki tag. `project` `ForAllValues`Pengubah memastikan bahwa itu `project` adalah satu-satunya tag yang diizinkan. Jika Anda tidak menyertakan `ForAllValues` pengubah, pengguna dapat menambahkan tag lain ke fungsi selama mereka juga lulus`project`.

**Example — Memerlukan tag pada fungsi baru**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
      "Effect": "Allow",
      "Action": [
        "lambda:CreateFunction",
        "lambda:TagResource"
      ],
      "Resource": "arn:aws:lambda:*:*:function:*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": "${aws:PrincipalTag/project}",
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": "project"
        }
      }
    }
  }
```

## Langkah 2: Izinkan tindakan berdasarkan tag yang dilampirkan ke fungsi Lambda dan prinsip IAM
<a name="restrict-actions-function-tags"></a>

Buat kebijakan IAM kedua menggunakan [ResourceTagkunci kondisi aws: /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) untuk meminta tag prinsipal agar sesuai dengan tag yang dilampirkan ke fungsi. Contoh kebijakan berikut memungkinkan prinsipal dengan `project` tag untuk memanggil fungsi dengan tag. `project` Jika suatu fungsi memiliki tag lain, tindakan ditolak.

**Example — Memerlukan tag yang cocok pada fungsi dan prinsip IAM**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lambda:InvokeFunction",
          "lambda:GetFunction"
        ],
        "Resource": "arn:aws:lambda:*:*:function:*",
        "Condition": {
          "StringEquals": {
            "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
          }
        }
      }
    ]
  }
```

## Langkah 3: Berikan izin daftar
<a name="abac-list-permissions"></a>

Buat kebijakan yang memungkinkan prinsipal untuk mencantumkan fungsi Lambda dan peran IAM. Hal ini memungkinkan prinsipal untuk melihat semua fungsi Lambda dan peran IAM di konsol dan saat memanggil tindakan API.

**Example — Berikan izin daftar Lambda dan IAM**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "AllResourcesLambdaNoTags",
        "Effect": "Allow",
        "Action": [
          "lambda:GetAccountSettings",
          "lambda:ListFunctions",
          "iam:ListRoles"
        ],
        "Resource": "*"
      }
    ]
  }
```

## Langkah 4: Berikan izin IAM
<a name="abac-iam-permissions"></a>

Buat kebijakan yang memungkinkan **iam: PassRole**. Izin ini diperlukan saat Anda menetapkan peran eksekusi ke suatu fungsi. Dalam contoh kebijakan berikut, ganti contoh ARN dengan ARN peran eksekusi Lambda Anda.

**catatan**  
Jangan menggunakan kunci ketentuan `ResourceTag` dalam sebuah kebijakan dengan tindakan `iam:PassRole`. Anda tidak dapat menggunakan tag pada peran IAM untuk mengontrol akses ke siapa yang dapat memberikan peran tersebut. Untuk informasi selengkapnya tentang izin yang diperlukan untuk meneruskan peran ke layanan, lihat [Memberikan izin pengguna untuk meneruskan peran ke](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) layanan. AWS 

**Example — Berikan izin untuk lulus peran eksekusi**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
          "iam:PassRole"
        ],
        "Resource": "arn:aws:iam::111122223333:role/lambda-ex"
      }
    ]
  }
```

## Langkah 5: Buat peran IAM
<a name="abac-create-role"></a>

Ini adalah praktik terbaik untuk [menggunakan peran untuk mendelegasikan izin](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#delegate-using-roles). [Buat peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) yang disebut`abac-project-role`:
+ Pada **Langkah 1: Pilih entitas tepercaya**: Pilih **AWS akun** dan kemudian pilih **Akun ini**.
+ Pada **Langkah 2: Tambahkan izin**: Lampirkan empat kebijakan IAM yang Anda buat di langkah sebelumnya.
+ Pada **Langkah 3: Nama, tinjau, dan buat**: Pilih **Tambahkan tag**. Untuk **Kunci**, masukkan `project`. Jangan masukkan **Nilai**.

## Langkah 6: Buat pengguna IAM
<a name="abac-create-user"></a>

[Buat pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) yang dipanggil`abac-test-user`. Di bagian **Setel izin**, pilih **Lampirkan kebijakan yang ada secara langsung**, lalu pilih **Buat kebijakan**. Masukkan definisi kebijakan berikut. Ganti *111122223333* dengan [ID AWS akun](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingYourAccountIdentifiers) Anda. Kebijakan ini memungkinkan `abac-test-user` untuk berasumsi`abac-project-role`.

**Example — Izinkan pengguna IAM untuk mengambil peran ABAC**  

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::111122223333:role/abac-project-role"
    }
  }
```

------

## Langkah 7: Uji izin
<a name="abac-test"></a>

1. Masuk ke AWS konsol sebagai`abac-test-user`. Untuk informasi selengkapnya, lihat [Masuk sebagai pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/console.html#user-sign-in-page).

1. Beralih ke peran `abac-project-role`. Untuk informasi selengkapnya, lihat [Beralih ke peran (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html).

1. [Buat fungsi Lambda](configuration-tags.md#using-tags-with-the-console):
   + Di bawah **Izin**, pilih **Ubah peran eksekusi default**, lalu untuk **peran Eksekusi**, pilih **Gunakan peran yang ada**. Pilih peran eksekusi yang sama dengan yang Anda gunakan[Langkah 4: Berikan izin IAM](#abac-iam-permissions).
   + Di bawah **Pengaturan lanjutan**, pilih **Aktifkan tag** dan kemudian pilih **Tambahkan tag baru**. Untuk **Kunci**, masukkan `project`. Jangan masukkan **Nilai**.

1. [Uji fungsinya](testing-functions.md).

1. Buat fungsi Lambda kedua dan tambahkan tag yang berbeda, seperti. `environment` Operasi ini akan gagal karena kebijakan ABAC yang Anda buat [Langkah 1: Memerlukan tag pada fungsi baru](#require-tag-on-create) hanya memungkinkan prinsipal untuk membuat fungsi dengan `project` tag.

1. Buat fungsi ketiga tanpa tag. Operasi ini akan gagal karena kebijakan ABAC yang Anda buat [Langkah 1: Memerlukan tag pada fungsi baru](#require-tag-on-create) tidak mengizinkan prinsipal untuk membuat fungsi tanpa tag.

Strategi otorisasi ini memungkinkan Anda untuk mengontrol akses tanpa membuat kebijakan baru untuk setiap pengguna baru. Untuk memberikan akses ke pengguna baru, cukup beri mereka izin untuk mengambil peran yang sesuai dengan proyek yang ditugaskan.

## Langkah 8: Bersihkan sumber daya Anda
<a name="abac-clean-up"></a>

**Untuk menghapus peran IAM**

1. Buka [halaman Peran](https://console.aws.amazon.com/iam/home#/roles) dari konsol IAM.

1. Pilih peran yang Anda buat di [langkah 5](#abac-create-role).

1. Pilih **Hapus**.

1. Untuk mengonfirmasi penghapusan, masukkan nama peran di bidang input teks.

1. Pilih **Hapus**.

**Untuk menghapus pengguna IAM**

1. Buka [halaman Pengguna](https://console.aws.amazon.com/iam/home#/users) konsol IAM.

1. Pilih pengguna IAM yang Anda buat di [langkah 6](#abac-create-user).

1. Pilih **Hapus**.

1. Untuk mengonfirmasi penghapusan, masukkan nama pengguna di bidang input teks.

1. Pilih **Hapus pengguna**.

**Untuk menghapus fungsi Lambda**

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

1. Pilih fungsi yang Anda buat.

1. Pilih **Tindakan**, **Hapus**.

1. Ketik **confirm** kolom input teks dan pilih **Hapus**.

# Menyesuaikan bagian Sumber Daya dan Ketentuan kebijakan
<a name="lambda-api-permissions-ref"></a>

Anda dapat membatasi cakupan izin pengguna dengan menentukan sumber daya dan kondisi dalam kebijakan AWS Identity and Access Management (IAM). Setiap tindakan dalam kebijakan mendukung kombinasi sumber daya dan jenis kondisi yang bervariasi tergantung pada perilaku tindakan.

Setiap pernyataan kebijakan IAM memberikan izin untuk tindakan yang dilakukan pada sumber daya. Ketika tindakan tersebut tidak dilakukan berdasarkan sumber daya yang disebutkan, atau ketika Anda memberikan izin untuk melakukan tindakan pada semua sumber daya, nilai sumber daya dalam kebijakan tersebut adalah wildcard (`*`). Untuk banyak tindakan, Anda dapat membatasi sumber daya yang dapat dimodifikasi pengguna dengan menentukan Nama Sumber Daya Amazon (ARN) sumber daya, atau pola ARN yang cocok dengan beberapa sumber daya.

Berdasarkan jenis sumber daya, desain umum tentang cara membatasi ruang lingkup suatu tindakan adalah sebagai berikut:
+ Fungsi — Tindakan yang beroperasi pada suatu fungsi dapat dibatasi pada fungsi tertentu berdasarkan fungsi, versi, atau alias ARN.
+ Pemetaan sumber peristiwa — Tindakan dapat dibatasi untuk sumber daya pemetaan sumber peristiwa tertentu oleh ARN. Pemetaan sumber peristiwa selalu dikaitkan dengan suatu fungsi. Anda juga dapat menggunakan `lambda:FunctionArn` kondisi untuk membatasi tindakan dengan fungsi terkait.
+ Layer—Tindakan yang terkait dengan penggunaan lapisan dan izin bertindak pada versi lapisan.
+ Konfigurasi penandatanganan kode — Tindakan dapat dibatasi untuk sumber daya konfigurasi penandatanganan kode tertentu oleh ARN.
+ Tag—Gunakan kondisi tag standar. Untuk informasi selengkapnya, lihat [Menggunakan kontrol akses berbasis atribut di Lambda](attribute-based-access-control.md).

Untuk membatasi izin berdasarkan sumber daya, tentukan sumber daya berdasarkan ARN.

**Format ARN sumber daya Lambda**
+ Fungsi – `arn:aws:lambda:us-west-2:123456789012:function:my-function`
+ Versi fungsi – `arn:aws:lambda:us-west-2:123456789012:function:my-function:1`
+ Alias fungsi – `arn:aws:lambda:us-west-2:123456789012:function:my-function:TEST`
+ Pemetaan sumber kejadian – `arn:aws:lambda:us-west-2:123456789012:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47`
+ Lapisan – `arn:aws:lambda:us-west-2:123456789012:layer:my-layer`
+ Versi lapisan – `arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1`
+ Konfigurasi penandatanganan kode - `arn:aws:lambda:us-west-2:123456789012:code-signing-config:my-csc`

Misalnya, kebijakan berikut memungkinkan pengguna Akun AWS `123456789012` untuk memanggil fungsi bernama `my-function` di Wilayah Barat AS (Oregon) AWS .

**Example aktifkan kebijakan fungsi**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Invoke",
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function"
        }
    ]
}
```

Ini adalah kasus khusus di mana pengidentifikasi tindakan (`lambda:InvokeFunction`) berbeda dari operasi API ([Aktifkan](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)). Untuk tindakan lainnya, pengidentifikasi tindakan adalah nama operasi yang diawali dengan `lambda:`.

**Topics**
+ [

## Memahami bagian Kondisi dalam kebijakan
](#authorization-conditions)
+ [

## Mereferensikan fungsi di bagian Sumber Daya kebijakan
](#function-resources)
+ [

## Tindakan IAM dan perilaku fungsi yang didukung
](#permissions-resources)

## Memahami bagian Kondisi dalam kebijakan
<a name="authorization-conditions"></a>

Kondisi adalah elemen kebijakan opsional yang menerapkan logika tambahan untuk menentukan apakah suatu tindakan diperbolehkan. Selain [kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) umum yang didukung semua tindakan, Lambda mendefinisikan jenis kondisi yang dapat Anda gunakan untuk membatasi nilai parameter tambahan pada beberapa tindakan.

[Misalnya, `lambda:Principal` kondisi ini memungkinkan Anda membatasi layanan atau akun tempat pengguna dapat memberikan akses pemanggilan pada kebijakan berbasis sumber daya fungsi.](access-control-resource-based.md) Kebijakan berikut memungkinkan pengguna memberikan izin ke topik Amazon Simple Notification Service (Amazon SNS) untuk memanggil fungsi bernama. `test`

**Example mengelola izin kebijakan fungsi**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageFunctionPolicy",
            "Effect": "Allow",
            "Action": [
                "lambda:AddPermission",
                "lambda:RemovePermission"
            ],
            "Resource": "arn:aws:lambda:us-west-2:123456789012:function:test:*",
            "Condition": {
                "StringEquals": {
                    "lambda:Principal": "sns.amazonaws.com"
                }
            }
        }
    ]
}
```

Kondisi mensyaratkan bahwa prinsipal adalah Amazon SNS dan bukan layanan atau akun lain. Pola sumber daya mengharuskan nama fungsi `test` dan mencakup nomor versi atau alias. Misalnya, `test:v1`.

Untuk informasi selengkapnya tentang sumber daya dan ketentuan untuk Lambda dan AWS layanan lainnya, lihat [Kunci tindakan, sumber daya, dan kondisi untuk AWS layanan](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) di Referensi *Otorisasi Layanan*.

## Mereferensikan fungsi di bagian Sumber Daya kebijakan
<a name="function-resources"></a>

Anda mereferensikan fungsi Lambda dalam pernyataan kebijakan menggunakan Amazon Resource Name (ARN). Format fungsi ARN tergantung pada apakah Anda mereferensikan seluruh fungsi (tidak memenuhi syarat) atau [versi](configuration-versions.md) fungsi atau [alias](configuration-aliases.md) (memenuhi syarat). 

Saat melakukan panggilan API Lambda, pengguna dapat menentukan versi atau alias dengan meneruskan versi ARN atau alias ARN dalam parameter, atau dengan menetapkan [GetFunction](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html)`FunctionName`nilai dalam parameter. [GetFunction](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html)`Qualifier` Lambda membuat keputusan otorisasi dengan membandingkan elemen sumber daya dalam kebijakan IAM dengan panggilan API `FunctionName` dan yang `Qualifier` diteruskan. Jika ada ketidakcocokan, Lambda menolak permintaan tersebut.

Apakah Anda mengizinkan atau menolak tindakan pada fungsi Anda, Anda harus menggunakan jenis ARN fungsi yang benar dalam pernyataan kebijakan Anda untuk mencapai hasil yang Anda harapkan. Misalnya, jika kebijakan Anda merujuk ARN yang tidak memenuhi syarat, Lambda menerima permintaan yang merujuk ARN yang tidak memenuhi syarat tetapi menolak permintaan yang merujuk pada ARN yang memenuhi syarat.

**catatan**  
Anda tidak dapat menggunakan karakter wildcard (\$1) untuk mencocokkan ID akun. Untuk informasi selengkapnya tentang sintaks yang diterima, lihat [referensi kebijakan IAM JSON di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) Pengguna *IAM*.

**Example memungkinkan pemanggilan ARN yang tidak memenuhi syarat**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction"
        }
    ]
}
```

Jika kebijakan Anda mereferensikan ARN yang memenuhi syarat tertentu, Lambda menerima permintaan yang mereferensikan ARN tetapi menolak permintaan yang merujuk ARN yang tidak memenuhi syarat atau ARN yang memenuhi syarat lainnya, misalnya,. `myFunction:2`

**Example memungkinkan pemanggilan ARN yang memenuhi syarat tertentu**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1"
        }
    ]
}
```

Jika kebijakan Anda mereferensikan penggunaan ARN yang memenuhi syarat, `:*` Lambda menerima ARN yang memenuhi syarat tetapi menolak permintaan yang merujuk ARN yang tidak memenuhi syarat.

**Example memungkinkan pemanggilan ARN yang memenuhi syarat**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*"
        }
    ]
}
```

Jika kebijakan Anda mereferensikan penggunaan ARN apa pun, `*` Lambda menerima ARN yang memenuhi syarat atau tidak memenuhi syarat.

**Example memungkinkan pemanggilan ARN yang memenuhi syarat atau tidak memenuhi syarat**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction*"
        }
    ]
}
```

## Tindakan IAM dan perilaku fungsi yang didukung
<a name="permissions-resources"></a>

 Tindakan menentukan apa yang dapat diizinkan melalui kebijakan IAM. Untuk daftar tindakan yang didukung di Lambda, lihat [Kunci tindakan, sumber daya, dan kondisi AWS Lambda di Referensi](https://docs.aws.amazon.com//service-authorization/latest/reference/list_awslambda.html) Otorisasi Layanan. Dalam kebanyakan kasus, ketika tindakan IAM mengizinkan tindakan API Lambda, nama tindakan IAM sama dengan nama tindakan API Lambda, dengan pengecualian berikut: 


| Tindakan API | Tindakan IAM | 
| --- | --- | 
| [Memohon](https://docs.aws.amazon.com//lambda/latest/api/API_Invoke.html) | lambda:InvokeFunction | 
| [GetLayerVersion](https://docs.aws.amazon.com//lambda/latest/api/API_GetLayerVersion.html) [GetLayerVersionByArn](https://docs.aws.amazon.com//lambda/latest/api/API_GetLayerVersionByArn.html) | lambda:GetLayerVersion | 

Selain sumber daya dan kondisi yang ditentukan dalam [Referensi Otorisasi Layanan](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html), Lambda mendukung sumber daya dan ketentuan berikut untuk tindakan tertentu. Banyak dari ini terkait dengan fungsi referensi di bagian sumber daya kebijakan. Tindakan yang beroperasi pada fungsi dapat dibatasi pada fungsi tertentu berdasarkan fungsi, versi, atau alias ARN, seperti yang dijelaskan dalam tabel berikut.


| Tindakan | Sumber Daya | Kondisi | 
| --- | --- | --- | 
|  [AddPermission](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html) [RemovePermission](https://docs.aws.amazon.com/lambda/latest/api/API_RemovePermission.html) [Memohon (](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)**Izin:**`lambda:InvokeFunction`)  |  Versi fungsi Alias fungsi  |  N/A  | 
|  [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)  |  N/A  |  `lambda:CodeSigningConfigArn`  | 
|  [CreateFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunctionUrlConfig.html) [DeleteFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteFunctionUrlConfig.html) [GetFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionUrlConfig.html) [UpdateFunctionUrlConfig](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionUrlConfig.html)  |  Alias fungsi  |  N/A  | 