Gunakan tombol CalledVia konteks untuk Athena - Amazon Athena

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

Gunakan tombol CalledVia konteks untuk Athena

Ketika seorang kepala sekolah membuat permintaan untuk AWS, AWS mengumpulkan informasi permintaan ke dalam konteks permintaan yang mengevaluasi dan mengotorisasi permintaan. Anda dapat menggunakan Condition elemen JSON kebijakan untuk membandingkan kunci dalam konteks permintaan dengan nilai kunci yang Anda tentukan dalam kebijakan Anda. Kunci konteks syarat global adalah berbagai kunci syarat dengan prefiks aws:.

Tentang aws:CalledVia kunci konteks

Anda dapat menggunakan aws:CalledViakunci konteks kondisi global untuk membandingkan layanan dalam kebijakan dengan layanan yang membuat permintaan atas nama IAM prinsipal (pengguna atau peran). Ketika seorang kepala sekolah membuat permintaan ke Layanan AWS, layanan itu mungkin menggunakan kredensi kepala sekolah untuk membuat permintaan berikutnya ke layanan lain. Kunci aws:CalledVia berisi daftar yang dipesan dari setiap layanan dalam rantai yang membuat permintaan atas nama utama.

Dengan menentukan nama utama layanan untuk kunci aws:CalledVia konteks, Anda dapat membuat kunci konteks Layanan AWS-spesifik. Misalnya, Anda dapat menggunakanaws:CalledViakondisi kunci untuk membatasi permintaan hanya yang dibuat dari Athena. Untuk menggunakanaws:CalledViakondisi kunci dalam kebijakan dengan Athena, Anda menentukan nama utama layanan Athenaathena.amazonaws.com, seperti pada contoh berikut.

... "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "athena.amazonaws.com" } } ...

Anda dapat menggunakanaws:CalledViauntuk memastikan pemanggil hanya memiliki akses ke sumber daya (seperti fungsi Lambda) jika mereka memanggil sumber daya dari Athena.

catatan

Kunci aws:CalledVia konteks tidak kompatibel dengan fitur propagasi identitas tepercaya.

Tambahkan kunci CalledVia konteks untuk akses ke fungsi Lambda

Athena membutuhkan penelepon untuk memilikilambda:InvokeFunctionizin untuk memanggil fungsi Lambda terkait dengan kueri. Pernyataan berikut menentukan bahwa pengguna dapat memanggil fungsi Lambda hanya dari Athena.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor3", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:OneAthenaLambdaFunction", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "athena.amazonaws.com" } } } ] }

Contoh berikut menunjukkan penambahan pernyataan sebelumnya ke kebijakan yang memungkinkan pengguna menjalankan dan membaca kueri gabungan. Utama yang diizinkan untuk melakukan tindakan ini dapat menjalankan kueri yang menentukan katalog Athena terkait dengan sumber data gabungan. Namun, utama tidak dapat mengakses fungsi Lambda terkait kecuali fungsi dipanggil melalui Athena.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "athena:GetWorkGroup", "s3:PutObject", "s3:GetObject", "athena:StartQueryExecution", "s3:AbortMultipartUpload", "athena:StopQueryExecution", "athena:GetQueryExecution", "athena:GetQueryResults", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:athena:*:111122223333:workgroup/WorkGroupName", "arn:aws:s3:::MyQueryResultsBucket/*", "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "athena:ListWorkGroups", "Resource": "*" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::MyLambdaSpillBucket" }, { "Sid": "VisualEditor3", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:*:111122223333:function:OneAthenaLambdaFunction", "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction" ], "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "athena.amazonaws.com" } } } ] }

Untuk informasi selengkapnya tentang kunci CalledVia kondisi, lihat AWS kunci konteks kondisi global di Panduan IAM Pengguna.