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
Mostrar claves de acceso
Para mostrar las claves de acceso de un determinado usuario, cree un objeto ListAccessKeysRequestlistAccessKeys 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 ListAccessKeysResponsemarker 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
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
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
Activar o desactivar claves de acceso
Puede activar o desactivar una clave de acceso creando un objeto UpdateAccessKeyRequeststatusupdateAccessKey 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
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
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
Más información
-
CreateAccessKey en la Referencia de la API de IAM
-
ListAccessKeys en la referencia de la API IAM
-
GetAccessKeyLastUsed en la referencia de la API de IAM
-
UpdateAccessKey en la Referencia de la API de IAM
-
DeleteAccessKey en la Referencia de la API de IAM