S3 Access Grants dan identitas direktori perusahaan - Amazon Simple Storage Service

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

S3 Access Grants dan identitas direktori perusahaan

Anda dapat menggunakan Amazon S3 Access Grants untuk memberikan akses ke AWS Identity and Access Management (IAM) prinsipal (pengguna atau peran), baik dalam hal yang sama maupun yang lain. Akun AWS Namun, dalam banyak kasus, entitas yang mengakses data adalah pengguna akhir dari direktori perusahaan Anda. Alih-alih memberikan akses ke IAM prinsipal, Anda dapat menggunakan S3 Access Grants untuk memberikan akses langsung ke pengguna dan grup perusahaan Anda. Dengan S3 Access Grants, Anda tidak perlu lagi memetakan identitas perusahaan Anda ke IAM kepala sekolah menengah untuk mengakses data S3 Anda melalui aplikasi perusahaan Anda.

Fungsionalitas baru ini—dukungan untuk menggunakan akses identitas pengguna akhir ke data—disediakan dengan mengaitkan instance S3 Access Grants Anda dengan sebuah instance. AWS IAM Identity Center IAMIdentity Center mendukung penyedia identitas berbasis standar dan merupakan hub AWS untuk layanan atau fitur apa pun, termasuk S3 Access Grants, yang mendukung identitas pengguna akhir. IAMIdentity Center menyediakan dukungan otentikasi untuk identitas perusahaan melalui fitur propagasi identitas tepercaya. Untuk informasi selengkapnya, lihat Propagasi identitas terpercaya di seluruh aplikasi.

Untuk memulai dengan dukungan identitas tenaga kerja di S3 Access Grants, sebagai prasyarat, Anda mulai di Pusat Identitas dengan mengonfigurasi penyediaan IAM identitas antara penyedia identitas perusahaan Anda dan Pusat Identitas. IAM IAMIdentity Center mendukung penyedia identitas perusahaan sepertiOkta, Microsoft Entra ID (sebelumnyaAzure Active Directory), atau penyedia identitas eksternal lainnya (IDP) yang mendukung protokol System for Cross-domain Identity Management (). SCIM Saat Anda menghubungkan Pusat IAM Identitas ke IDP dan mengaktifkan penyediaan otomatis, pengguna dan grup dari iDP Anda disinkronkan ke dalam penyimpanan identitas di Pusat Identitas. IAM Setelah langkah ini, IAM Identity Center memiliki pandangan sendiri tentang pengguna dan grup Anda, sehingga Anda dapat merujuk kepada mereka dengan menggunakan fitur lain AWS services dan fitur, seperti S3 Access Grants. Untuk informasi selengkapnya tentang mengonfigurasi penyediaan otomatis Pusat IAM Identitas, lihat Penyediaan otomatis di Panduan Pengguna.AWS IAM Identity Center

IAMPusat Identitas terintegrasi AWS Organizations sehingga Anda dapat mengelola izin secara terpusat di beberapa Akun AWS tanpa mengonfigurasi setiap akun secara manual. Di organisasi biasa, administrator identitas Anda mengonfigurasi satu instans Pusat IAM Identitas untuk seluruh organisasi, sebagai satu titik sinkronisasi identitas. Instance Pusat IAM Identitas ini biasanya berjalan di dedicated Akun AWS di organisasi Anda. Dalam konfigurasi umum ini, Anda dapat merujuk ke identitas pengguna dan grup di S3 Access Grants dari manapun Akun AWS di organisasi.

Namun, jika AWS Organizations administrator belum mengonfigurasi instans Pusat IAM Identitas pusat, Anda dapat membuat instance lokal di akun yang sama dengan instans S3 Access Grants Anda. Konfigurasi seperti itu lebih umum untuk proof-of-concept atau kasus penggunaan pengembangan lokal. Dalam semua kasus, instance IAM Identity Center harus Wilayah AWS sama dengan instance S3 Access Grants yang akan dikaitkan.

Dalam diagram konfigurasi Pusat IAM Identitas berikut dengan iDP eksternal, iDP dikonfigurasi dengan SCIM untuk menyinkronkan penyimpanan identitas dari iDP ke penyimpanan identitas di Pusat Identitas. IAM

IAMIntegrasi Pusat Identitas dengan penyimpanan identitas eksternal melalui penyediaan otomatis.

Untuk menggunakan identitas direktori perusahaan Anda dengan S3 Access Grants, lakukan hal berikut ini:

Bagaimana identitas direktori dapat mengakses data S3

Misalkan Anda memiliki pengguna direktori perusahaan yang perlu mengakses data S3 Anda melalui aplikasi perusahaan, misalnya, aplikasi penampil dokumen, yang terintegrasi dengan IdP eksternal Anda (misalnya, Okta) untuk mengautentikasi pengguna. Otentikasi pengguna dalam aplikasi ini biasanya dilakukan melalui pengalihan di browser web pengguna. Karena pengguna dalam direktori bukan IAM prinsipal, aplikasi Anda memerlukan IAM kredensil yang dapat digunakan untuk memanggil GetDataAccess API operasi S3 Access Grants untuk mendapatkan kredensil akses ke data S3 atas nama pengguna. Tidak seperti IAM pengguna dan peran yang mendapatkan kredensialnya sendiri, aplikasi Anda memerlukan cara untuk mewakili pengguna direktori, yang tidak dipetakan ke IAM peran, sehingga pengguna bisa mendapatkan akses data melalui S3 Access Grants.

Transisi ini, dari pengguna direktori yang diautentikasi ke IAM penelepon yang dapat membuat permintaan ke S3 Access Grants atas nama pengguna direktori, dilakukan oleh aplikasi melalui fitur penerbit token tepercaya dari Identity Center. IAM Aplikasi, setelah mengautentikasi pengguna direktori, memiliki token identitas dari IDP (misalnya, Okta) yang mewakili pengguna direktori menurut Okta. Konfigurasi penerbit token tepercaya di IAM Identity Center memungkinkan aplikasi untuk menukar Okta token ini (Oktapenyewa dikonfigurasi sebagai “penerbit tepercaya”) untuk token identitas yang berbeda dari Pusat IAM Identitas yang akan mewakili pengguna direktori dengan aman. AWS services Aplikasi data kemudian akan mengambil IAM peran, menyediakan token pengguna direktori dari IAM Identity Center sebagai konteks tambahan. Aplikasi dapat menggunakan IAM sesi yang dihasilkan untuk memanggil S3 Access Grants. Token mewakili identitas aplikasi (IAMprinsipal itu sendiri) serta identitas pengguna direktori.

Langkah utama dari transisi ini adalah pertukaran token. Aplikasi melakukan pertukaran token ini dengan memanggil CreateTokenWithIAM API operasi di IAM Identity Center. Tentu saja, itu juga AWS API panggilan dan membutuhkan IAM kepala sekolah untuk menandatanganinya. IAMPrinsip yang membuat permintaan ini biasanya merupakan IAM peran yang terkait dengan aplikasi. Misalnya, jika aplikasi berjalan di AmazonEC2, CreateTokenWithIAM permintaan biasanya dilakukan oleh IAM peran yang terkait dengan EC2 instance tempat aplikasi berjalan. Hasil dari CreateTokenWithIAM panggilan yang berhasil adalah token identitas baru, yang akan dikenali di dalamnya AWS services.

Langkah selanjutnya, sebelum aplikasi dapat memanggil GetDataAccess nama pengguna direktori, adalah agar aplikasi mendapatkan IAM sesi yang menyertakan identitas pengguna direktori. Aplikasi melakukan ini dengan AssumeRole permintaan AWS Security Token Service (AWS STS) yang juga menyertakan token Pusat IAM Identitas untuk pengguna direktori sebagai konteks identitas tambahan. Konteks tambahan inilah yang memungkinkan IAM Identity Center untuk menyebarkan identitas pengguna direktori ke langkah berikutnya. IAMPeran yang diasumsikan aplikasi adalah peran yang memerlukan IAM izin untuk memanggil operasi. GetDataAccess

Setelah mengambil IAM peran pembawa identitas dengan token Pusat IAM Identitas untuk pengguna direktori sebagai konteks tambahan, aplikasi sekarang memiliki semua yang diperlukan untuk membuat permintaan yang ditandatangani GetDataAccess atas nama pengguna direktori yang diautentikasi.

Penyebaran token didasarkan pada langkah-langkah berikut:

Buat aplikasi Pusat IAM Identitas

Pertama, buat aplikasi baru di IAM Identity Center. Aplikasi ini akan menggunakan template yang memungkinkan IAM Identity Center untuk mengidentifikasi jenis pengaturan aplikasi yang dapat Anda gunakan. Perintah untuk membuat aplikasi mengharuskan Anda untuk memberikan contoh IAM Identity Center Amazon Resource Name (ARN), nama aplikasi, dan penyedia aplikasiARN. Penyedia aplikasi adalah penyedia OAuth aplikasi SAML atau yang akan digunakan aplikasi untuk melakukan panggilan ke Pusat IAM Identitas.

Untuk menggunakan perintah contoh berikut, ganti user input placeholders dengan informasi Anda sendiri:

aws sso-admin create-application \ --instance-arn "arn:aws:sso:::instance/ssoins-ssoins-1234567890abcdef" \ --application-provider-arn "arn:aws:sso::aws:applicationProvider/custom" \ --name MyDataApplication

Respons:

{ "ApplicationArn": "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" }

Buat penerbit token tepercaya

Sekarang setelah Anda memiliki aplikasi Pusat IAM Identitas, langkah selanjutnya adalah mengonfigurasi penerbit token tepercaya yang akan digunakan untuk menukar IdToken nilai Anda dari IDP Anda IAM dengan token Identity Center. Pada langkah ini Anda perlu memberikan item berikut:

  • Penerbit penyedia identitas URL

  • Nama penerbit token tepercaya

  • Jalur atribut klaim

  • Jalur atribut toko identitas

  • Opsi pengambilan JSON Web Key Set (JWKS)

Jalur atribut klaim adalah atribut penyedia identitas yang akan digunakan untuk memetakan ke atribut penyimpanan identitas. Biasanya, jalur atribut klaim adalah alamat email pengguna, tetapi Anda dapat menggunakan atribut lain untuk melakukan pemetaan.

Buat file yang disebut oidc-configuration.json dengan informasi berikut. Untuk menggunakan file ini, ganti user input placeholders dengan informasi Anda sendiri.

{ "OidcJwtConfiguration": { "IssuerUrl": "https://login.microsoftonline.com/a1b2c3d4-abcd-1234-b7d5-b154440ac123/v2.0", "ClaimAttributePath": "preferred_username", "IdentityStoreAttributePath": "userName", "JwksRetrievalOption": "OPEN_ID_DISCOVERY" } }

Untuk membuat penerbit token tepercaya, jalankan perintah berikut. Untuk menggunakan contoh perintah ini, ganti user input placeholders dengan informasi Anda sendiri.

aws sso-admin create-trusted-token-issuer \ --instance-arn "arn:aws:sso:::instance/ssoins-1234567890abcdef" \ --name MyEntraIDTrustedIssuer \ --trusted-token-issuer-type OIDC_JWT \ --trusted-token-issuer-configuration file://./oidc-configuration.json

Respons

{ "TrustedTokenIssuerArn": "arn:aws:sso::123456789012:trustedTokenIssuer/ssoins-1234567890abcdef/tti-43b4a822-1234-1234-1234-a1b2c3d41234" }

Connect aplikasi IAM Identity Center dengan penerbit token tepercaya

Penerbit token tepercaya memerlukan beberapa pengaturan konfigurasi lagi untuk bekerja. Tetapkan audiens yang akan dipercaya oleh penerbit token tepercaya. Audiens adalah nilai di dalam IdToken yang diidentifikasi oleh kunci dan dapat ditemukan di pengaturan penyedia identitas. Sebagai contoh:

1234973b-abcd-1234-abcd-345c5a9c1234

Buat file dengan nama grant.json dengan konten berikut ini. Untuk menggunakan file ini, ubah audiens agar sesuai dengan pengaturan penyedia identitas Anda dan berikan penerbit token tepercaya ARN yang dikembalikan oleh perintah sebelumnya.

{ "JwtBearer": { "AuthorizedTokenIssuers": [ { "TrustedTokenIssuerArn": "arn:aws:sso::123456789012:trustedTokenIssuer/ssoins-1234567890abcdef/tti-43b4a822-1234-1234-1234-a1b2c3d41234", "AuthorizedAudiences": [ "1234973b-abcd-1234-abcd-345c5a9c1234" ] } ] } }

Jalankan perintah contoh berikut. Untuk menggunakan perintah ini, ganti user input placeholders dengan informasi Anda sendiri.

aws sso-admin put-application-grant \ --application-arn "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" \ --grant-type "urn:ietf:params:oauth:grant-type:jwt-bearer" \ --grant file://./grant.json \

Perintah ini menetapkan penerbit token tepercaya dengan pengaturan konfigurasi untuk mempercayai audiens dalam file grant.json dan menautkan audiens ini dengan aplikasi yang dibuat pada langkah pertama untuk bertukar token dari jenis jwt-bearer. String urn:ietf:params:oauth:grant-type:jwt-bearer bukan merupakan string arbitrer. Ini adalah namespace terdaftar di profil pernyataan OAuth JSON Web Token (JWT). Anda dapat menemukan informasi lebih lanjut tentang namespace ini di RFC 7523.

Selanjutnya, gunakan perintah berikut untuk mengatur cakupan mana yang akan disertakan oleh penerbit token tepercaya saat bertukar IdToken nilai dari penyedia identitas Anda. Untuk S3 Access Grants, nilai untuk --scope parameter adalah s3:access_grants:read_write.

aws sso-admin put-application-access-scope \ --application-arn "arn:aws:sso::111122223333:application/ssoins-ssoins-111122223333abcdef/apl-abcd1234a1b2c3d" \ --scope "s3:access_grants:read_write"

Langkah terakhir adalah melampirkan kebijakan sumber daya ke aplikasi Pusat IAM Identitas. Kebijakan ini akan memungkinkan IAM peran aplikasi Anda untuk membuat permintaan ke API operasi sso-oauth:CreateTokenWithIAM dan menerima IdToken nilai dari Pusat IAM Identitas.

Buat file dengan nama authentication-method.json dengan konten berikut ini. Ganti 123456789012 dengan ID akun Anda.

{ "Iam": { "ActorPolicy": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/webapp" }, "Action": "sso-oauth:CreateTokenWithIAM", "Resource": "*" } ] } } }

Untuk melampirkan kebijakan ke aplikasi Pusat IAM Identitas, jalankan perintah berikut:

aws sso-admin put-application-authentication-method \ --application-arn "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" \ --authentication-method-type IAM \ --authentication-method file://./authentication-method.json

Ini melengkapi pengaturan konfigurasi untuk menggunakan S3 Access Grants dengan pengguna direktori melalui aplikasi web. Anda dapat menguji pengaturan ini secara langsung di aplikasi atau Anda dapat memanggil CreateTokenWithIAM API operasi dengan menggunakan perintah berikut dari IAM peran yang diizinkan dalam kebijakan aplikasi Pusat IAM Identitas:

aws sso-oidc create-token-with-iam \ --client-id "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" \ --grant-type urn:ietf:params:oauth:grant-type:jwt-bearer \ --assertion IdToken

Respons akan serupa dengan ini:

{ "accessToken": "<suppressed long string to reduce space>", "tokenType": "Bearer", "expiresIn": 3600, "refreshToken": "<suppressed long string to reduce space>", "idToken": "<suppressed long string to reduce space>", "issuedTokenType": "urn:ietf:params:oauth:token-type:refresh_token", "scope": [ "sts:identity_context", "s3:access_grants:read_write", "openid", "aws" ] }

Jika Anda memecahkan kode IdToken nilai yang dikodekan dengan base64, Anda dapat melihat pasangan kunci-nilai dalam format. JSON Kunci sts:identity_context berisi nilai yang perlu dikirim aplikasi Anda dalam sts:AssumeRole permintaan untuk menyertakan informasi identitas pengguna direktori. Berikut adalah contoh yang IdToken di-decode:

{ "aws:identity_store_id": "d-996773e796", "sts:identity_context": "AQoJb3JpZ2luX2VjEOTtl;<SUPRESSED>", "sub": "83d43802-00b1-7054-db02-f1d683aacba5", "aws:instance_account": "123456789012", "iss": "https://identitycenter.amazonaws.com/ssoins-1234567890abcdef", "sts:audit_context": "AQoJb3JpZ2luX2VjEOT<SUPRESSED>==", "aws:identity_store_arn": "arn:aws:identitystore::232642235904:identitystore/d-996773e796", "aud": "abcd12344U0gi7n4Yyp0-WV1LWNlbnRyYWwtMQ", "aws:instance_arn": "arn:aws:sso:::instance/ssoins-6987d7fb04cf7a51", "aws:credential_id": "EXAMPLEHI5glPh40y9TpApJn8...", "act": { "sub": "arn:aws:sso::232642235904:trustedTokenIssuer/ssoins-6987d7fb04cf7a51/43b4a822-1020-7053-3631-cb2d3e28d10e" }, "auth_time": "2023-11-01T20:24:28Z", "exp": 1698873868, "iat": 1698870268 }

Anda bisa mendapatkan nilai dari sts:identity_context dan meneruskan informasi ini dalam sts:AssumeRole panggilan. Berikut ini adalah CLI contoh sintaks. Peran yang akan diasumsikan adalah peran sementara dengan izin untuk menginvokasi s3:GetDataAccess.

aws sts assume-role \ --role-arn "arn:aws:iam::123456789012:role/temp-role" \ --role-session-name "TempDirectoryUserRole" \ --provided-contexts ProviderArn="arn:aws:iam::aws:contextProvider/IdentityCenter",ContextAssertion="value from sts:identity_context"

Anda sekarang dapat menggunakan kredensil yang diterima dari panggilan ini untuk menjalankan s3:GetDataAccess API operasi dan menerima kredensil akhir dengan akses ke sumber daya S3 Anda.