

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

# 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  | 