Administrar claves de acceso de IAM - AWS SDK for Java 2.x

Administrar claves de acceso de IAM

Creación de una clave de acceso

Para crear una clave de acceso de IAM, llame al método IamClient’s de createAccessKey con un objeto CreateAccessKeyRequest.

nota

Debe establecer la región en AWS_GLOBAL para que las llamadas a IamClient funcionen, porque IAM es un servicio global.

Importaciones

import software.amazon.awssdk.services.iam.model.CreateAccessKeyRequest; import software.amazon.awssdk.services.iam.model.CreateAccessKeyResponse; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iam.IamClient; import software.amazon.awssdk.services.iam.model.IamException;

Código de

public static String createIAMAccessKey(IamClient iam,String user) { try { CreateAccessKeyRequest request = CreateAccessKeyRequest.builder() .userName(user).build(); CreateAccessKeyResponse response = iam.createAccessKey(request); String keyId = response.accessKey().accessKeyId(); return keyId; } catch (IamException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }

Consulte el ejemplo completo en GitHub.

Mostrar claves de acceso

Para mostrar las claves de acceso de un determinado usuario, cree un objeto ListAccessKeysRequest que contenga el nombre de usuario para el que se desean mostrar la claves y páselo al método listAccessKeys de IamClient’s.

nota

Si no proporciona un nombre de usuario a listAccessKeys, intentará enumerar las claves de acceso asociadas a la Cuenta de AWS que firmó la solicitud.

Importaciones

import software.amazon.awssdk.services.iam.model.AccessKeyMetadata; import software.amazon.awssdk.services.iam.model.IamException; import software.amazon.awssdk.services.iam.model.ListAccessKeysRequest; import software.amazon.awssdk.services.iam.model.ListAccessKeysResponse; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iam.IamClient;

Código de

public static void listKeys( IamClient iam,String userName ){ try { boolean done = false; String newMarker = null; while (!done) { ListAccessKeysResponse response; if(newMarker == null) { ListAccessKeysRequest request = ListAccessKeysRequest.builder() .userName(userName).build(); response = iam.listAccessKeys(request); } else { ListAccessKeysRequest request = ListAccessKeysRequest.builder() .userName(userName) .marker(newMarker).build(); response = iam.listAccessKeys(request); } for (AccessKeyMetadata metadata : response.accessKeyMetadata()) { System.out.format("Retrieved access key %s", metadata.accessKeyId()); } if (!response.isTruncated()) { done = true; } else { newMarker = response.marker(); } } } catch (IamException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Los resultados de listAccessKeys están paginados (con un máximo de 100 registros por llamada). Puede llamar a isTruncated en el objeto ListAccessKeysResponse devuelto para saber si la consulta ha devuelto menos resultados de los que están disponibles. En tal caso, llame a marker en el objeto ListAccessKeysResponse y úselo al crear una nueva solicitud. Utilice esta nueva solicitud en la siguiente invocación de listAccessKeys.

Consulte el ejemplo completo en GitHub.

Recuperar el momento en que se usó por última vez una clave de acceso

Para obtener la hora en que se utilizó una clave de acceso por última vez, llame al método getAccessKeyLastUsed de IamClient’s con el ID de clave de acceso (que se puede pasar mediante un objeto GetAccessKeyLastUsedRequest).

A continuación, puede utilizar el objeto GetAccessKeyLastUsedResponse devuelto para recuperar el momento en que se usó por última vez la clave.

Importaciones

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iam.IamClient; import software.amazon.awssdk.services.iam.model.GetAccessKeyLastUsedRequest; import software.amazon.awssdk.services.iam.model.GetAccessKeyLastUsedResponse; import software.amazon.awssdk.services.iam.model.IamException;

Código de

public static void getAccessKeyLastUsed(IamClient iam, String accessId ){ try { GetAccessKeyLastUsedRequest request = GetAccessKeyLastUsedRequest.builder() .accessKeyId(accessId).build(); GetAccessKeyLastUsedResponse response = iam.getAccessKeyLastUsed(request); System.out.println("Access key was last used at: " + response.accessKeyLastUsed().lastUsedDate()); } catch (IamException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } System.out.println("Done"); }

Consulte el ejemplo completo en GitHub.

Activar o desactivar claves de acceso

Puede activar o desactivar una clave de acceso creando un objeto UpdateAccessKeyRequest, proporcionando el ID de clave de acceso, el nombre de usuario (de forma opcional) y el status deseado y, a continuación, pasando el objeto de la solicitud al método updateAccessKey de IamClient’s.

Importaciones

import software.amazon.awssdk.services.iam.model.IamException; import software.amazon.awssdk.services.iam.model.StatusType; import software.amazon.awssdk.services.iam.model.UpdateAccessKeyRequest; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iam.IamClient;

Código de

public static void updateKey(IamClient iam, String username, String accessId, String status ) { try { if (status.toLowerCase().equalsIgnoreCase("active")) { statusType = StatusType.ACTIVE; } else if (status.toLowerCase().equalsIgnoreCase("inactive")) { statusType = StatusType.INACTIVE; } else { statusType = StatusType.UNKNOWN_TO_SDK_VERSION; } UpdateAccessKeyRequest request = UpdateAccessKeyRequest.builder() .accessKeyId(accessId) .userName(username) .status(statusType) .build(); iam.updateAccessKey(request); System.out.printf( "Successfully updated the status of access key %s to" + "status %s for user %s", accessId, status, username); } catch (IamException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Consulte el ejemplo completo en GitHub.

Eliminación de una clave de acceso

Para eliminar de forma permanente una clave de acceso, llame al método deleteKey de IamClient’s, proporcionándole un DeleteAccessKeyRequest que contenga el ID y el nombre de usuario de la clave de acceso.

nota

Una vez eliminada una clave, ya no se puede recuperar ni utilizar. Para desactivar temporalmente una clave de forma que pueda activarse de nuevo más adelante, utilice el método updateAccessKey en su lugar.

Importaciones

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.iam.IamClient; import software.amazon.awssdk.services.iam.model.DeleteAccessKeyRequest; import software.amazon.awssdk.services.iam.model.IamException;

Código de

public static void deleteKey(IamClient iam ,String username, String accessKey ) { try { DeleteAccessKeyRequest request = DeleteAccessKeyRequest.builder() .accessKeyId(accessKey) .userName(username) .build(); iam.deleteAccessKey(request); System.out.println("Successfully deleted access key " + accessKey + " from user " + username); } catch (IamException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Consulte el ejemplo completo en GitHub.

Más información