Usar uma ferramenta de linha de comando para enviar consultas ao cluster de banco de dados do Neptune - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar uma ferramenta de linha de comando para enviar consultas ao cluster de banco de dados do Neptune

Ter uma ferramenta de linha de comando para enviar consultas ao cluster de banco de dados do Neptune é muito útil, conforme ilustrado em muitos dos exemplos desta documentação. A ferramenta curl é uma excelente opção para se comunicar com os endpoints do Neptune quando a autenticação do IAM não está habilitada.

No entanto, para manter os dados seguros, é melhor habilitar a autenticação do IAM.

Quando a autenticação do IAM está habilitada, cada solicitação deve ser assinada usando o Signature versão 4 (Sig4). A ferramenta de linha de comando awscurl de terceiros usa a mesma sintaxe que curl e pode assinar consultas usando a assinatura Sig4. A seção Utilizar o awscurl abaixo explica como usar awscurl com segurança credenciais temporárias.

Configurar uma ferramenta de linha de comando para usar HTTPS

O Neptune exige que todas as conexões usem HTTPS. Qualquer ferramenta de linha de comando, como curl ou awscurl, precisa acessar os certificados apropriados, a fim de usar HTTPS. Desde que o curl e o awscurl possam localizar os certificados adequados, eles tratam as conexões HTTPS da mesma forma que as conexões HTTP, sem precisar de parâmetros extras. Os exemplos desta documentação se baseiam nesse cenário.

Para saber como obter esses certificados e como formatá-los corretamente em um armazenamento de certificados (CA) que o curl possa usar, consulte SSL Certificate Verification na documentação do curl.

Depois, você pode especificar o local desse armazenamento de certificados CA usando a variável de ambiente CURL_CA_BUNDLE. No Windows, o curl os procura automaticamente em um arquivo chamado curl-ca-bundle.crt. Ele procura primeiro no mesmo diretório curl.exe e, em seguida, em outros lugares no caminho. Para obter mais informações, consulte SSL Certificate Verification.

Usar awscurl com credenciais temporárias para se conectar com segurança a um cluster de banco de dados com a autenticação do IAM habilitada

A ferramenta awscurl usa a mesma sintaxe que curl, mas também precisa de informações adicionais:

  • --access_key: uma chave de acesso válida. Se não for fornecida usando esse parâmetro, ela deverá ser fornecida na variável de ambiente AWS_ACCESS_KEY_ID ou em um arquivo de configuração.

  • --secret_key: a chave de acesso secreta que corresponde à chave de acesso. Se não for fornecida usando esse parâmetro, ela deverá ser fornecida na variável de ambiente AWS_SECRET_ACCESS_KEY ou em um arquivo de configuração.

  • --security_token: um token de sessão válido. Se não for fornecida usando esse parâmetro, ela deverá ser fornecida na variável de ambiente AWS_SECURITY_TOKEN ou em um arquivo de configuração.

No passado, era uma prática comum usar credenciais persistentes com awscurl, como credenciais de usuário do IAM ou até mesmo credenciais raiz, mas isso não é recomendado. Em vez disso, gere credenciais temporárias usando uma das APIs do AWS Security Token Service (STS) ou um de seus wrappers da AWS CLI.

É melhor colocar os valores AccessKeyId, SecretAccessKey e SessionToken são gerados pela chamada STS nas variáveis de ambiente apropriadas em sua sessão de shell e não em um arquivo de configuração. Então, quando o shell for encerrado, as credenciais serão automaticamente descartadas, diferente de um arquivo de configuração. Da mesma forma, não solicite para as credenciais temporárias uma duração maior do que você provavelmente precisará.

O exemplo a seguir mostra as etapas que você pode executar em um shell Linux para obter credenciais temporárias válidas por meia hora usando sts assume-role e, depois, colocá-las em variáveis de ambiente em que awscurl pode encontrá-las:

aws sts assume-role \ --duration-seconds 1800 \ --role-arn "arn:aws:iam::(account-id):role/(rolename)" \ --role-session-name AWSCLI-Session > $output AccessKeyId=$(cat $output | jq '.Credentials''.AccessKeyId') SecretAccessKey=$(cat $output | jq '.Credentials''.SecretAccessKey') SessionToken=$(cat $output | jq '.Credentials''.SessionToken') export AWS_ACCESS_KEY_ID=$AccessKeyId export AWS_SECRET_ACCESS_KEY=$SecretAccessKey export AWS_SESSION_TOKEN=$SessionToken

Depois, você pode usar awscurl para fazer uma solicitação assinada para o cluster de banco de dados mais ou menos desta forma:

awscurl (your cluster endpoint):8182/status \ --region us-east-1 \ --service neptune-db