

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

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