Gerenciar chaves de acesso IAM - AWS SDK for Java 2.x

Gerenciar chaves de acesso IAM

Criar uma chave de acesso

Para criar uma chave de acesso do IAM, chame o método createAccessKey do IamClient’s com um objeto CreateAccessKeyRequest.

nota

Você deve definir a região como AWS_GLOBAL para chamadas do IamClient para trabalhar, porque o IAM é um serviço global.

Importações

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 da

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 ""; }

Veja o exemplo completo no GitHub.

Listar chaves de acesso

Para listar as chaves de acesso de determinado usuário, crie um objeto ListAccessKeysRequest que contenha o nome de usuário para o qual listar as chaves e passe-o ao método listAccessKeys do IamClient’s.

nota

Se você não fornecer um nome de usuário para listAccessKeys, ele tentará listar chaves de acesso associadas à Conta da AWS que assinou a solicitação.

Importações

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 da

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

Os resultados de listAccessKeys são paginados (com um máximo de 100 registros por chamada). Você pode chamar isTruncated no objeto ListAccessKeysResponse retornado para ver se a consulta retornou menos resultados do que os disponíveis. Se esse for o caso, chame marker no ListAccessKeysResponse e use-o ao criar uma nova solicitação. Use essa nova solicitação na próxima invocação de listAccessKeys.

Veja o exemplo completo no GitHub.

Recuperar a hora do uso mais recente de uma chave de acesso

Para obter a hora em que uma chave de acesso foi usada pela última vez, chame o método getAccessKeyLastUsed do IamClient’s com o ID da chave de acesso, que pode ser passado usando um objeto GetAccessKeyLastUsedRequest.

Depois disso, é possível usar o objeto GetAccessKeyLastUsedResponse retornado para recuperar a hora em que a chave foi usada mais recentemente.

Importações

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 da

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"); }

Veja o exemplo completo no GitHub.

Ativar ou desativar chaves de acesso

Você pode ativar ou desativar uma chave de acesso criando um objeto UpdateAccessKeyRequest, fornecendo o ID de chave de acesso, opcionalmente, o nome do usuário e o status desejado e, então, passando o objeto de solicitação para o método updateAccessKey do IamClient’s.

Importações

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 da

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

Veja o exemplo completo no GitHub.

Excluir uma chave de acesso

Para excluir permanentemente uma chave de acesso, chame o método deleteKey do IamClient’s, fornecendo DeleteAccessKeyRequest que contenha o ID e o nome de usuário da chave de acesso.

nota

Depois de excluída, uma chave não poderá mais ser recuperada ou usada. Para desativar temporariamente uma chave de maneira que ela possa ser reativada mais tarde, use o método updateAccessKey.

Importações

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 da

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

Veja o exemplo completo no GitHub.

Mais informações