Carica credenziali temporanee da un processo esterno - AWS SDK for Java 2.x

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Carica credenziali temporanee da un processo esterno

avvertimento

Di seguito viene descritto un metodo per ottenere credenziali temporanee da un processo esterno. Questo può essere potenzialmente pericoloso, quindi procedi con cautela. Se possibile, dovrebbero essere preferiti altri fornitori di credenziali. Se si utilizza questa opzione, è necessario assicurarsi che il config file sia il più protetto possibile utilizzando le migliori pratiche di sicurezza per il sistema operativo in uso.

Assicurati che lo strumento per le credenziali personalizzate non scriva StdErr informazioni segrete su. SDKse AWS CLI può acquisire e registrare tali informazioni, esponendole potenzialmente a utenti non autorizzati.

Con la versione SDK per Java 2.x, è possibile acquisire credenziali temporanee da un processo esterno per casi d'uso personalizzati. Esistono due modi per configurare questa funzionalità.

Usa l'credential_processimpostazione

Se disponi di un metodo che fornisce credenziali temporanee, puoi integrarlo aggiungendo l'credential_processimpostazione come parte di una definizione di profilo nel config file. Il valore specificato deve utilizzare il percorso completo del file di comando. Se il percorso del file contiene spazi, è necessario racchiuderlo tra virgolette.

SDKChiama il comando esattamente come indicato e quindi legge i JSON dati da. stdout

Gli esempi seguenti mostrano l'uso di questa impostazione per percorsi di file senza spazi e percorsi di file con spazi.

Linux/macOS
Nessuno spazio nel percorso del file
[profile process-credential-profile] credential_process = /path/to/credential/file/credential_file.sh --custom-command custom_parameter
Spazi nel percorso del file
[profile process-credential-profile] credential_process = "/path/with/space to/credential/file/credential_file.sh" --custom-command custom_parameter
Windows
Nessuno spazio nel percorso del file
[profile process-credential-profile] credential_process = C:\Path\To\credentials.cmd --custom_command custom_parameter
Spazi nel percorso del file
[profile process-credential-profile] credential_process = "C:\Path\With Space To\credentials.cmd" --custom_command custom_parameter

Il seguente frammento di codice mostra come creare un client di servizio che utilizza le credenziali temporanee definite come parte del profilo denominato. process-credential-profile

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

Per informazioni dettagliate sull'utilizzo di un processo esterno come fonte di credenziali temporanee, consultate la sezione relativa alle credenziali di processo nella and Tools Reference Guide. AWS SDKs

Utilizzate un ProcessCredentialsProvider

In alternativa all'utilizzo delle impostazioni nel config file, puoi utilizzare i ProcessCredentialsProvider per caricare le SDK credenziali temporanee utilizzando Java.

Gli esempi seguenti mostrano varie versioni di come specificare un processo esterno utilizzando ProcessCredentialsProvider e configurare un client di servizio che utilizza le credenziali temporanee.

Linux/macOS
Nessuno spazio nel percorso del 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();
Spazi nel percorso del 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
Nessuno spazio nel percorso del 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();
Spazi nel percorso del 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();

Usa IAM Roles Anywhere per l'autenticazione

IAMRoles Anywhere è un Servizio AWS programma che consente di ottenere AWS credenziali temporanee per carichi di lavoro eseguiti al di fuori di. AWS Consente l'accesso sicuro alle AWS risorse da ambienti locali o altri ambienti cloud.

Prima di poter autenticare le richieste con IAM Roles Anywhere, devi prima raccogliere le informazioni richieste e scaricare lo strumento di supporto alle credenziali. Seguendo le istruzioni introduttive contenute nella Guida per l'utente di IAM Roles Anywhere, è possibile creare gli elementi necessari.

The SDK for Java non dispone di un provider di credenziali dedicato per recuperare credenziali temporanee da IAM Roles Anywhere, ma è possibile utilizzare lo strumento di supporto per le credenziali insieme a una delle opzioni per recuperare le credenziali da un processo esterno.

Usa l'impostazione in un profilo credential_process

Il seguente frammento del file di AWS configurazione condiviso mostra un profilo denominato roles_anywhere che utilizza l'impostazione: 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

È necessario sostituire il testo mostrato in rosso con i valori dopo aver assemblato tutti gli artefatti. Il primo elemento dell'impostazione,aws_signing_helper, è l'eseguibile dello strumento di supporto alle credenziali ed credential-process è il comando.

Quando si configura un client di servizio per l'utilizzo del roles_anywhere profilo, come illustrato nel codice seguente, memorizza nella SDK cache le credenziali temporanee e le aggiorna prima della scadenza:

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

Configura un ProcessCredentialsProvider

Come illustrato di seguito, puoi utilizzare un approccio basato solo sul codice con, ProcessCredentialsProvider anziché utilizzare le impostazioni del profilo:

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();

Sostituisci il testo mostrato in rosso con i tuoi valori dopo aver assemblato tutti gli artefatti.