

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cargue las credenciales de un proceso externo mediante el AWS SDK for Java 2.x
<a name="credentials-process"></a>

**aviso**  
A continuación se describe un método para obtener credenciales de un proceso externo. Esto resulta potencialmente peligroso, así que proceda con precaución. Recomendamos utilizar otros proveedores de credenciales si es posible. Si usa esta opción, es recomendable asegurarse de que el archivo `config` esté lo más bloqueado posible siguiendo las prácticas recomendadas de seguridad del sistema operativo.   
Asegúrese de que su herramienta de credenciales personalizadas no escriba ninguna información secreta en ella`StdErr`. SDKs y AWS CLI puede capturar y registrar dicha información, lo que podría exponerla a usuarios no autorizados.

Con el SDK para Java 2.x, puede adquirir credenciales temporales de un proceso externo para casos de uso personalizados. Hay dos formas de configurar esta funcionalidad.

## Usar la configuración de `credential_process`
<a name="credentials-credential_process"></a>

Si tiene un método que proporciona credenciales temporales, puede integrarlo añadiendo la configuración de `credential_process` como parte de una definición de perfil en el archivo `config`. El valor que especifique debe utilizar la ruta completa al archivo de comandos. Si la ruta del archivo contiene espacios, debe escribirla entre comillas.

El SDK llama al comando exactamente como se especifica y, a continuación, lee los datos JSON desde `stdout`. 

Los ejemplos siguientes muestran el uso de esta configuración para las rutas de archivos sin espacios y las rutas de archivos con espacios.

------
#### [ Linux/macOS ]

**Sin espacios en la ruta del archivo**  

```
[profile process-credential-profile]
credential_process = /path/to/credential/file/credential_file.sh --custom-command custom_parameter
```

**Con espacios en la ruta del archivo**  

```
[profile process-credential-profile]
credential_process = "/path/with/space to/credential/file/credential_file.sh" --custom-command custom_parameter
```

------
#### [ Windows ]

**Sin espacios en la ruta del archivo**  

```
[profile process-credential-profile]
credential_process = C:\Path\To\credentials.cmd --custom_command custom_parameter
```

**Con espacios en la ruta del archivo**  

```
[profile process-credential-profile]
credential_process = "C:\Path\With Space To\credentials.cmd" --custom_command custom_parameter
```

------

El siguiente fragmento de código muestra cómo crear un cliente de servicio que utilice la configuración definida como parte del perfil denominado `process-credential-profile`.

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

Para obtener información detallada sobre el uso de un proceso externo como fuente de credenciales temporales, consulte la [sección sobre credenciales de procesos](https://docs.aws.amazon.com/sdkref/latest/guide/feature-process-credentials.html) de la Guía de referencia sobre herramientas AWS SDKs y herramientas.

## Utilizar un `ProcessCredentialsProvider`.
<a name="credentials-procredprovider"></a>

Como alternativa al uso de la configuración del archivo `config`, puede usar los `[ProcessCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/ProcessCredentialsProvider.html)` del SDK para cargar credenciales temporales mediante Java. 

Los siguientes ejemplos muestran varias versiones de cómo especificar un proceso externo utilizando el `ProcessCredentialsProvider` y configurando un cliente de servicio que utilice las credenciales temporales.

------
#### [ Linux/macOS ]

**Sin espacios en la ruta del archivo**  

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

**Con espacios en la ruta del archivo**  

```
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 ]

**Sin espacios en la ruta del archivo**  

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

**Con espacios en la ruta del archivo**  

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

------

## Uso IAM Roles Anywhere en autenticación
<a name="credentials-iam-roles-anywhere"></a>

[IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) le permite obtener AWS credenciales temporales para cargas de trabajo Servicio de AWS que se ejecutan fuera de él. AWS Permite el acceso seguro a recursos de AWS desde entornos locales o de otro tipo en la nube.

Antes de poder autenticar las solicitudes con IAM Roles Anywhere, debe recopilar la información necesaria y descargar la [herramienta ayudante de credenciales](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html). Siga las instrucciones de [Introducción](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/getting-started.html) de la Guía del usuario de IAM Roles Anywhere para crear los artefactos necesarios. 

El SDK para Java no tiene un proveedor de credenciales dedicado para recuperar credenciales temporales de IAM Roles Anywhere, pero puede utilizar la herramienta ayudante de credenciales junto con una de las opciones para [recuperar credenciales de un proceso externo](#credentials-process).

### Uso del ajuste `credential_process` en un perfil
<a name="credentials-iam-roles-anywhere-config"></a>

En el siguiente fragmento del archivo de AWS configuración compartido, se muestra un nombre de perfil `roles_anywhere` que utiliza la configuración: `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
```

Debe reemplazar el texto que se muestra en rojo por sus valores después de haber ensamblado todos los artefactos. El primer elemento de la configuración, `aws_signing_helper` es el ejecutable de la herramienta ayudante de credenciales y `credential-process` es el comando.

Al configurar un cliente de servicio para que use el perfil `roles_anywhere`, como se muestra en el siguiente código, el SDK almacena en caché las credenciales temporales y las actualiza antes de que caduquen:

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

### Configuración de un `ProcessCredentialsProvider`
<a name="credentials-iam-roles-anywhere-process"></a>

Como se muestra a continuación, puede utilizar un método de solo código con el `ProcessCredentialsProvider` en lugar de utilizar la configuración del perfil:

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

Reemplace el texto que se muestra en rojo por sus valores después de haber ensamblado todos los artefactos. 