Configurando um método Amazon API Gateway como um provedor de identidade personalizado - AWS Transfer Family

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á.

Configurando um método Amazon API Gateway como um provedor de identidade personalizado

Este tutorial ilustra como configurar um método do Amazon API Gateway e usá-lo como um provedor de identidade personalizado para carregar arquivos em um AWS Transfer Family servidor. Este tutorial usa o Modelo de pilha básica e outras funcionalidades básicas apenas como exemplo.

Pré-requisitos

Antes de criar os recursos do Transfer Family em CloudFormation, crie seu armazenamento e sua função de usuário.

Para especificar o armazenamento e criar uma função de usuário
  1. Dependendo do armazenamento que você está usando, consulte a seguinte documentação:

  2. Para criar uma função de usuário, consulte Criar uma política e um perfil do IAM.

Você insere os detalhes do seu armazenamento e da sua função de usuário ao criar sua pilha CloudFormation na próxima seção.

Etapa 1: criar uma CloudFormation pilha

Para criar uma AWS CloudFormation pilha a partir do modelo fornecido
  1. Abra o CloudFormation console em https://console.aws.amazon.com/cloudformation.

  2. Selecione Criar pilha e depois Com novos recursos (padrão).

  3. No painel Pré-requisito - Preparar modelo, escolha Escolher um modelo existente.

  4. Copie este link, Modelo básico de pilha, e cole-o no campo URL do Amazon S3.

  5. Clique em Next.

  6. Especifique os parâmetros, incluindo um nome para sua pilha. Não deixe de fazer o seguinte:

    • Substitua os valores padrão por UserNameUserPassworde.

    • Para UserHomeDirectory, insira os detalhes do armazenamento (um bucket do Amazon S3 ou um sistema de arquivos do Amazon EFS) que você criou anteriormente.

    • Substitua o padrão UserRoleArnpela função de usuário que você criou anteriormente. A função AWS Identity and Access Management (IAM) deve ter as permissões apropriadas. Para obter um exemplo de perfil do IAM e política de bucket, consulte Etapa 6: Limitar o acesso ao bucket.

    • Se você quiser se autenticar usando uma chave pública em vez de uma senha, insira sua chave pública no campo UserPublicKey1. A primeira vez que você se conectar ao servidor usando SFTP, fornecerá a chave privada, em vez da senha.

  7. Escolha Avançar e então Avançar outra vez na página Configurar opções de pilha.

  8. Revise os detalhes da pilha que você está criando e escolha Criar pilha.

    nota

    Na parte inferior da página, em Capacidades, reconheça que CloudFormation pode criar recursos do IAM.

Etapa 2: Conferir a configuração do método do API Gateway para seu servidor

nota

Para melhorar a segurança, é possível configurar um firewall para aplicações Web. O AWS WAF é um firewall para aplicações Web que permite monitorar as solicitações HTTP e HTTPS que são encaminhadas ao Amazon API Gateway. Para obter detalhes, consulte Adicione um firewall da aplicação web.

Não habilite o armazenamento em cache do API Gateway

Não habilite o armazenamento em cache para seu método API Gateway ao usá-lo como um provedor de identidade personalizado para Transfer Family. O armazenamento em cache é impróprio e inválido para solicitações de autenticação porque:

  • Cada solicitação de autenticação é exclusiva e requer uma resposta ativa, não uma resposta em cache

  • O armazenamento em cache não oferece benefícios, pois o Transfer Family nunca envia solicitações duplicadas ou repetidas para o API Gateway.

  • A ativação do armazenamento em cache fará com que o API Gateway responda com dados incompatíveis, resultando em respostas inválidas às solicitações de autenticação

Para verificar a configuração do método do API Gateway para seu servidor e implantá-lo.
  1. Abra o console do API Gateway em https://console.aws.amazon.com/apigateway/.

  2. Escolha a API de modelo básico do Transfer Custom Identity Provider que o CloudFormation modelo gerou.

  3. No painel Recursos, selecione / e, em seguida, escolha Solicitação de método.

  4. Escolha Ações e Implantar API. Para o Estágio de implantação, escolha prod e Implantar.

    Depois que o método API Gateway for implantado com sucesso, veja seu desempenho na seção Editor de estágio.

    nota

    Copie o endereço do URL de invocação exibido na parte superior da página. Você precisará dele para a próxima etapa.

Etapa 3: Visualizar os detalhes do servidor do Transfer Family

Quando você usa o modelo para criar uma CloudFormation pilha, um servidor Transfer Family é criado automaticamente.

Para visualizar os detalhes do servidor do Transfer Family
  1. Abra o CloudFormation console em https://console.aws.amazon.com/cloudformation.

  2. Escolha a pilha que você criou.

  3. Escolha a guia Recursos.

    Tela que mostra a lista de recursos criados durante a criação da CloudFormation pilha, com os detalhes do servidor Transfer Family em destaque.

    O ARN do servidor é mostrado na coluna ID física da TransferServerlinha. O ID do servidor está contido no ARN, por exemplo, s-11112222333344445.

  4. Abra o AWS Transfer Family console em e https://console.aws.amazon.com/transfer/, na página Servidores, escolha o novo servidor.

    O ID do servidor corresponde ao ID exibido para o TransferServerrecurso em CloudFormation.

Etapa 4: Testar se o usuário consegue se conectar ao servidor

Para testar se o usuário consegue se conectar ao servidor usando o console Transfer Family
  1. Abra o AWS Transfer Family console em https://console.aws.amazon.com/transfer/.

  2. Na página Servidores, escolha seu novo servidor, escolha Ações e escolha Testar.

  3. Insira o texto das suas credenciais de login no campo Nome de usuário e no campo Senha. Esses são os valores que você definiu ao implantar a CloudFormation pilha.

  4. Em Protocolo do servidor, selecione SFTP e, em IP de origem, insira 127.0.0.1.

  5. Escolha Testar.

    Se a autenticação do usuário for bem-sucedida, o teste retornará uma resposta HTML StatusCode: 200 e um objeto JSON contendo os detalhes das funções e permissões do usuário. Por exemplo:

    { "Response": "{\"Role\": \"arn:aws:iam::123456789012:role/my-user-role\",\"HomeDirectory\": \"/${transfer:HomeBucket}/\"}", "StatusCode": 200, "Message": "", "Url": "https://1a2b3c4d5e.execute-api.us-east-2.amazonaws.com/prod/servers/s-1234abcd5678efgh0/users/myuser/config" }

    Se o teste falhar, adicione uma das políticas AWS gerenciadas do API Gateway à função que você está usando para sua API.

Etapa 5: Testar a conexão SFTP e a transferência de arquivos

Para testar a conexão SFTP
  1. Em um dispositivo Linux ou Macintosh, abra um terminal de comando.

  2. Digite um dos comandos a seguir, dependendo se você está usando uma senha ou um par de chaves para autenticação.

    • Se você estiver usando uma senha, digite este comando:

      sftp -o PubkeyAuthentication=no myuser@server-ID.server.transfer.region-code.amazonaws.com

      Insira sua senha quando for solicitado.

    • Se você estiver usando um par chave, digite este comando:

      sftp -i private-key-file myuser@server-ID.server.transfer.region-code.amazonaws.com

    nota

    Para estes comandos sftp, insira o código para a Região da AWS onde seu servidor Transfer Family está localizado. Por exemplo, se seu servidor estiver no Leste dos EUA (Ohio), insira us-east-2.

  3. No prompt sftp>, verifique se é possível fazer upload (put), baixar (get) e visualizar diretórios e arquivos (pwd e ls).

Etapa 6: Limitar o acesso ao bucket

É possível limitar quem pode acessar um bucket específico do Amazon S3. O exemplo a seguir mostra as configurações a serem usadas em sua CloudFormation pilha e na política que você seleciona para seu usuário.

Neste exemplo, definimos os seguintes parâmetros para a CloudFormation pilha:

  • CreateServer: true

  • UserHomeDirectory: /amzn-s3-demo-bucket1

  • UserName: myuser

  • UserPassword: MySuperSecretPassword

    Importante

    Este é um exemplo de senha. Ao configurar seu método do API Gateway, insira uma senha forte.

  • UserPublicKey1: your-public-key

  • UserRoleArn: arn:aws:iam::role-id:role/myuser-api-gateway-role

O UserPublicKey1 é uma chave pública que você gerou como parte de um par de public/private chaves.

O role-id é único para a função de usuário que você criar. A política do myuser-api-gateway-role a seguir é anexada ao:

{ "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:PutObjectAcl", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*" } ] }

Para se conectar ao servidor usando SFTP, digite um dos comandos a seguir no prompt.

  • Se você estiver usando um par de chaves para autenticação, execute este comando:

    sftp -o PubkeyAuthentication=no myuser@transfer-server-ID.server.transfer.region-id.amazonaws.com

    Insira sua senha quando for solicitado.

  • Se você estiver usando um par chave para autenticação, execute este comando:

    sftp -i private-key-file myuser@transfer-server-ID.server.transfer.region-id.amazonaws.com

nota

Para esses sftp comandos, use o ID de Região da AWS onde seu servidor Transfer Family está localizado. Por exemplo, se seu servidor estiver no Leste dos EUA (Ohio), use us-east-2.

No prompt sftp, você é direcionado ao seu diretório inicial, que pode ser visualizado executando o comando pwd. Por exemplo:

sftp> pwd Remote working directory: /amzn-s3-demo-bucket1

O usuário não pode visualizar nenhum diretório acima do diretório inicial. Por exemplo:

sftp> pwd Remote working directory: /amzn-s3-demo-bucket1 sftp> cd .. sftp> ls Couldn't read directory: Permission denied

Atualize o Lambda se estiver usando o Amazon EFS

Se você selecionou o Amazon EFS como opção de armazenamento para seu servidor do Transfer Family, edite a função do Lambda para sua pilha.

Para adicionar um perfil Posix à sua função Lambda
  1. Abra o console Lambda em. https://console.aws.amazon.com/lambda/

  2. Escolha a função do Lambda que você criou anteriormente. A função Lambda tem o formato de stack-name- GetUserConfigLambda - lambda-identifier, onde stack-name é o nome da CloudFormation pilha e lambda-identifier é o identificador da função.

  3. Na guia Código, selecione index.js para exibir o código da função.

  4. No response, adicione a seguinte linha entre Policy e HomeDirectory:

    PosixProfile: {"Uid": uid-value, "Gid": gid-value},

    Onde uid-value e gid-value são números inteiros, 0 ou maiores, que representam a ID do usuário e a ID do grupo, respectivamente.

    Por exemplo, depois de adicionar o perfil Posix, o campo de resposta pode ficar assim:

    response = { Role: 'arn:aws:iam::123456789012:role/api-gateway-transfer-efs-role', // The user will be authenticated if and only if the Role field is not blank Policy: '', // Optional JSON blob to further restrict this user's permissions PosixProfile: {"Gid": 65534, "Uid": 65534}, HomeDirectory: '/fs-fab2c234' // Not required, defaults to '/' };