

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

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