Memuat kredensi sementara dari proses eksternal - AWS SDK for Java 2.x

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

Memuat kredensi sementara dari proses eksternal

Awas

Berikut ini menjelaskan metode sumber kredensil sementara dari proses eksternal. Ini berpotensi berbahaya, jadi lanjutkan dengan hati-hati. Penyedia kredensi lainnya harus lebih disukai jika memungkinkan. Jika menggunakan opsi ini, Anda harus memastikan bahwa config file tersebut dikunci semaksimal mungkin menggunakan praktik terbaik keamanan untuk sistem operasi Anda.

Pastikan alat kredensi kustom Anda tidak menulis informasi rahasia apa pun. StdErr SDKsdan AWS CLI dapat menangkap dan mencatat informasi tersebut, berpotensi mengeksposnya kepada pengguna yang tidak sah.

Dengan SDK untuk Java 2.x, Anda dapat memperoleh kredensil sementara dari proses eksternal untuk kasus penggunaan khusus. Ada dua cara untuk mengkonfigurasi fungsi ini.

Gunakan credential_process pengaturan

Jika Anda memiliki metode yang menyediakan kredensi sementara, Anda dapat mengintegrasikannya dengan menambahkan credential_process pengaturan sebagai bagian dari definisi profil dalam file. config Nilai yang Anda tentukan harus menggunakan path lengkap ke file perintah. Jika jalur file berisi spasi apa pun, Anda harus mengelilinginya dengan tanda kutip.

SDKMemanggil perintah persis seperti yang diberikan dan kemudian membaca JSON data daristdout.

Contoh berikut menunjukkan penggunaan pengaturan ini untuk jalur file tanpa spasi dan jalur file dengan spasi.

Linux/macOS
Tidak ada spasi di jalur file
[profile process-credential-profile] credential_process = /path/to/credential/file/credential_file.sh --custom-command custom_parameter
Spasi di jalur file
[profile process-credential-profile] credential_process = "/path/with/space to/credential/file/credential_file.sh" --custom-command custom_parameter
Windows
Tidak ada spasi di jalur file
[profile process-credential-profile] credential_process = C:\Path\To\credentials.cmd --custom_command custom_parameter
Spasi di jalur file
[profile process-credential-profile] credential_process = "C:\Path\With Space To\credentials.cmd" --custom_command custom_parameter

Cuplikan kode berikut menunjukkan cara membangun klien layanan yang menggunakan kredenal sementara yang didefinisikan sebagai bagian dari profil bernama. process-credential-profile

Region region = Region.US_WEST_2; S3Client s3Client = S3Client.builder() .region(region) .credentialsProvider(ProfileCredentialsProvider.create("process-credential-profile")) .build();

Untuk informasi rinci tentang menggunakan proses eksternal sebagai sumber kredensional sementara, lihat bagian kredensial proses di Panduan Referensi AWS SDKs dan Alat.

Gunakan ProcessCredentialsProvider

Sebagai alternatif untuk menggunakan pengaturan dalam config file, Anda dapat menggunakan SDK's ProcessCredentialsProvider untuk memuat kredensi sementara menggunakan Java.

Contoh berikut menunjukkan berbagai versi cara menentukan proses eksternal menggunakan ProcessCredentialsProvider dan mengkonfigurasi klien layanan yang menggunakan kredensi sementara.

Linux/macOS
Tidak ada spasi di jalur file
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("/path/to/credentials.sh optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();
Spasi di jalur file
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("/path\\ with\\ spaces\\ to/credentials.sh optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();
Windows
Tidak ada spasi di jalur file
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("C:\\Path\\To\\credentials.exe optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();
Spasi di jalur file
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("\"C:\\Path\\With Spaces To\\credentials.exe\" optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();

Gunakan IAM Peran Di Mana Saja untuk otentikasi

IAMRoles Anywhere adalah sebuah Layanan AWS yang memungkinkan Anda memperoleh AWS kredensi sementara untuk beban kerja yang berjalan di luar. AWS Ini memungkinkan akses aman ke AWS sumber daya dari lingkungan cloud lokal atau lainnya.

Sebelum Anda dapat mengautentikasi permintaan dengan IAM Peran Di Mana Saja, Anda harus terlebih dahulu mengumpulkan informasi yang diperlukan dan mengunduh alat pembantu kredenal. Dengan mengikuti petunjuk Memulai di Panduan Pengguna IAM Peran Di Mana Saja, Anda dapat membuat artefak yang diperlukan.

The SDK for Java tidak memiliki penyedia kredensi khusus untuk mengambil kredensi sementara dari IAM Peran Di Mana Saja, tetapi Anda dapat menggunakan alat pembantu kredenal bersama dengan salah satu opsi untuk mengambil kredensional dari proses eksternal.

Gunakan credential_process pengaturan di profil

Cuplikan berikut dalam file AWS konfigurasi bersama menunjukkan profil bernama roles_anywhere yang menggunakan setelan: credential_process

[profile roles_anywhere] credential_process = ./aws_signing_helper credential-process \ --certificate /path/to/certificate \ --private-key /path/to/private-key \ --trust-anchor-arn arn:aws:rolesanywhere:region:account:trust-anchor/TA_ID \ --profile-arn arn:aws:rolesanywhere:region:account:profile/PROFILE_ID \ --role-arn arn:aws:iam::account:role/role-name-with-path

Anda perlu mengganti teks yang ditampilkan dengan warna merah dengan nilai-nilai Anda setelah Anda mengumpulkan semua artefak. Elemen pertama dalam pengaturan,aws_signing_helper, adalah executable dari alat pembantu kredenal dan credential-process merupakan perintah.

Saat Anda mengonfigurasi klien layanan untuk menggunakan roles_anywhere profil—seperti yang ditunjukkan dalam kode berikut—akan menyimpan kredensi sementara dan SDK menyegarkannya sebelum kedaluwarsa:

S3Client s3Client = S3Client.builder() .credentialsProvider(ProfileCredentialsProvider.builder() .profileName("roles_anywhere").build()) .build();

Konfigurasikan a ProcessCredentialsProvider

Seperti yang ditunjukkan selanjutnya, Anda dapat menggunakan pendekatan kode saja dengan ProcessCredentialsProvider alih-alih menggunakan pengaturan profil:

ProcessCredentialsProvider processCredentialsProvider = ProcessCredentialsProvider.builder() .command(""" ./aws_signing_helper credential-process \ --certificate /path/to/certificate \ --private-key /path/to/private-key \ --trust-anchor-arn arn:aws:rolesanywhere:region:account:trust-anchor/TA_ID \ --profile-arn arn:aws:rolesanywhere:region:account:profile/PROFILE_ID \ --role-arn arn:aws:iam::account:role/role-name-with-path """).build(); S3Client s3Client = S3Client.builder() .credentialsProvider(processCredentialsProvider) .build();

Ganti teks yang ditampilkan dengan warna merah dengan nilai Anda setelah Anda mengumpulkan semua artefak.