Menyediakan kredensi sementara dalam kode - 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.

Menyediakan kredensi sementara dalam kode

Jika rantai kredensi default atau penyedia atau rantai penyedia khusus atau khusus tidak berfungsi untuk aplikasi Anda, Anda dapat memberikan kredensi sementara secara langsung dalam kode. Ini bisa berupa kredensi peran IAM seperti yang dijelaskan di atas atau kredenal sementara yang diambil dari (). AWS Security Token Service AWS STS Jika Anda mengambil kredensyal sementara menggunakan AWS STS, berikan kepada AWS service klien seperti yang ditunjukkan dalam contoh kode berikut.

  1. Asumsikan peran dengan meneleponStsClient.assumeRole().

  2. Buat StaticCredentialsProviderobjek dan suplai dengan AwsSessionCredentials objek.

  3. Konfigurasikan pembuat klien layanan dengan StaticCredentialsProvider dan bangun klien.

Contoh berikut membuat klien layanan Amazon S3 menggunakan kredensyal sementara yang dikembalikan oleh AWS STS untuk peran yang diasumsikan IAM.

// The AWS IAM Identity Center identity (user) who executes this method does not have permission to list buckets. // The identity is configured in the [default] profile. public static void assumeRole(String roleArn, String roleSessionName) { // The IAM role represented by the 'roleArn' parameter can be assumed by identities in two different accounts // and the role permits the user to only list buckets. // The SDK's default credentials provider chain will find the single sign-on settings in the [default] profile. // The identity configured with the [default] profile needs permission to call AssumeRole on the STS service. try { Credentials tempRoleCredentials; try (StsClient stsClient = StsClient.create()) { AssumeRoleRequest roleRequest = AssumeRoleRequest.builder() .roleArn(roleArn) .roleSessionName(roleSessionName) .build(); AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest); tempRoleCredentials = roleResponse.credentials(); } // Use the following temporary credential items for the S3 client. String key = tempRoleCredentials.accessKeyId(); String secKey = tempRoleCredentials.secretAccessKey(); String secToken = tempRoleCredentials.sessionToken(); // List all buckets in the account associated with the assumed role // by using the temporary credentials retrieved by invoking stsClient.assumeRole(). StaticCredentialsProvider staticCredentialsProvider = StaticCredentialsProvider.create( AwsSessionCredentials.create(key, secKey, secToken)); try (S3Client s3 = S3Client.builder() .credentialsProvider(staticCredentialsProvider) .build()) { List<Bucket> buckets = s3.listBuckets().buckets(); for (Bucket bucket : buckets) { System.out.println("bucket name: " + bucket.name()); } } } catch (StsException | S3Exception e) { logger.error(e.getMessage()); System.exit(1); } }

Set izin berikut yang didefinisikan dalam AWS IAM Identity Center memungkinkan identitas (pengguna) untuk melakukan dua operasi berikut

  1. GetObjectPengoperasian Layanan Penyimpanan Sederhana Amazon.

  2. AssumeRolePengoperasian AWS Security Token Service.

Tanpa mengasumsikan peran, s3.listBuckets() metode yang ditunjukkan dalam contoh akan gagal.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "sts:AssumeRole" ], "Resource": [ "*" ] } ] }

Kebijakan izin peran yang diasumsikan

Kebijakan izin berikut dilampirkan pada peran yang diasumsikan dalam contoh sebelumnya. Polilitas izin ini memungkinkan kemampuan untuk mencantumkan semua bucket di akun yang sama dengan peran.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": [ "*" ] } ] }

Kebijakan kepercayaan peran yang diasumsikan

Kebijakan kepercayaan berikut dilampirkan pada peran yang diasumsikan dalam contoh sebelumnya. Kebijakan ini memungkinkan peran diasumsikan oleh identitas (pengguna) dalam dua akun.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::555555555555:root" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }