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 prinsipal AWS Identity and Access Management (IAM) (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 pengguna utama IAM, 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 pengguna utama IAM 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 IAM Identity 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. IAM Identity 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 IAM Identity Center dengan mengonfigurasi penyediaan identitas antara penyedia identitas perusahaan Anda dan IAM Identity Center. IAM Identity Center mendukung penyedia identitas perusahaan seperti Okta, Microsoft Entra ID (sebelumnya Azure Active Directory), atau penyedia identitas eksternal lainnya (IDP) yang mendukung protokol System for Cross-domain Identity Management (SCIM). Saat Anda menghubungkan Pusat Identitas IAM 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 Layanan AWS dan fitur, seperti S3 Access Grants. Untuk informasi selengkapnya tentang mengonfigurasi penyediaan otomatis Pusat Identitas IAM, lihat Penyediaan otomatis di Panduan Pengguna AWS IAM Identity Center .

IAM Identity Center terintegrasi AWS Organizations sehingga Anda dapat mengelola izin secara terpusat di beberapa Akun AWS tanpa mengonfigurasi setiap akun secara manual. Dalam organisasi tipikal, administrator identitas Anda mengonfigurasi satu instans Pusat Identitas IAM untuk seluruh organisasi, sebagai satu titik sinkronisasi identitas. Instance IAM Identity Center 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 Identitas IAM pusat, Anda dapat membuat instans 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 berikut konfigurasi Pusat Identitas IAM dengan IdP eksternal, IdP dikonfigurasi dengan SCIM untuk menyinkronkan penyimpanan identitas dari IdP ke penyimpanan identitas di IAM Identity Center.

Integrasi IAM Identity Center 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 pengguna utama IAM, aplikasi Anda memerlukan kredensial IAM yang dapat memanggil operasi S3 Access Grants GetDataAccess API untuk mendapatkan kredensial akses ke data S3 atas nama pengguna. Tidak seperti pengguna IAM dan peran yang mendapatkan kredensialnya sendiri, aplikasi Anda memerlukan cara untuk mewakili pengguna direktori, yang tidak dipetakan ke peran IAM, sehingga pengguna bisa mendapatkan akses data melalui S3 Access Grants.

Transisi ini, dari pengguna direktori yang diautentikasi ke penelepon IAM yang dapat membuat permintaan ke S3 Access Grants atas nama pengguna direktori, dilakukan oleh aplikasi melalui fitur penerbit token tepercaya IAM Identity Center. 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 ini Okta token ( Okta penyewa dikonfigurasi sebagai “penerbit tepercaya”) untuk token identitas yang berbeda dari IAM Identity Center yang akan mewakili pengguna direktori di dalamnya dengan aman. Layanan AWS Aplikasi data kemudian akan mengambil peran IAM, menyediakan token pengguna direktori dari IAM Identity Center sebagai konteks tambahan. Aplikasi dapat menggunakan sesi IAM yang dihasilkan untuk memanggil S3 Access Grants. Token mewakili identitas aplikasi (pengguna utama IAM itu sendiri) serta identitas pengguna direktori.

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

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

Setelah mengasumsikan peran IAM pembawa identitas dengan token IAM Identity Center 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 Identitas IAM

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 aplikasi ARN. Penyedia aplikasi adalah SALL atau penyedia OAuth aplikasi yang akan digunakan aplikasi untuk melakukan panggilan ke IAM Identity Center.

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 IAM Identity Center, langkah selanjutnya adalah mengonfigurasi penerbit token tepercaya yang akan digunakan untuk menukar nilai IdToken Anda dari IdP Anda dengan token IAM Identity Center. Pada langkah ini Anda perlu memberikan item berikut:

  • URL penerbit penyedia identitas

  • 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 ARN penerbit token tepercaya 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 IAM Identity Center. Kebijakan ini akan memungkinkan peran IAM aplikasi Anda untuk membuat permintaan ke operasi API sso-oauth:CreateTokenWithIAM dan menerima IdToken nilai dari IAM Identity Center.

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 IAM Identity Center, 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 penyiapan ini secara langsung di aplikasi atau Anda dapat memanggil operasi CreateTokenWithIAM API dengan menggunakan perintah berikut dari peran IAM yang diizinkan dalam kebijakan aplikasi Pusat Identitas IAM:

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 contoh CLI dari 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 kredensial yang diterima dari panggilan ini untuk menginvokasi operasi s3:GetDataAccess API dan menerima kredensial akhir dengan akses ke sumber daya S3 Anda.