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
Tópicos
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
Dependendo do armazenamento que você está usando, consulte a seguinte documentação:
Para criar um bucket do Amazon S3, consulte Como criar um bucket do S3? no Guia do usuário do console do Amazon Simple Storage Service.
-
Para criar um sistema de arquivos Amazon EFS, consulteConfigurar um sistema de arquivos Amazon EFS.
-
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
Abra o CloudFormation console em https://console.aws.amazon.com/cloudformation
. -
Selecione Criar pilha e depois Com novos recursos (padrão).
-
No painel Pré-requisito - Preparar modelo, escolha Escolher um modelo existente.
-
Copie este link, Modelo básico de pilha
, e cole-o no campo URL do Amazon S3. -
Clique em Next.
-
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.
-
Escolha Avançar e então Avançar outra vez na página Configurar opções de pilha.
-
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.
-
Abra o console do API Gateway em https://console.aws.amazon.com/apigateway/
. -
Escolha a API de modelo básico do Transfer Custom Identity Provider que o CloudFormation modelo gerou.
-
No painel Recursos, selecione / e, em seguida, escolha Solicitação de método.
-
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
Abra o CloudFormation console em https://console.aws.amazon.com/cloudformation
. Escolha a pilha que você criou.
Escolha a guia Recursos.
O ARN do servidor é mostrado na coluna ID física da TransferServerlinha. O ID do servidor está contido no ARN, por exemplo, s-11112222333344445.
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
Abra o AWS Transfer Family console em https://console.aws.amazon.com/transfer/
. -
Na página Servidores, escolha seu novo servidor, escolha Ações e escolha Testar.
-
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.
-
Em Protocolo do servidor, selecione SFTP e, em IP de origem, insira
127.0.0.1. -
Escolha Testar.
Se a autenticação do usuário for bem-sucedida, o teste retornará uma resposta HTML
StatusCode: 200e 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
-
Em um dispositivo Linux ou Macintosh, abra um terminal de comando.
-
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=nomyuser@server-ID.server.transfer.region-code.amazonaws.com.rproxy.govskope.caInsira sua senha quando for solicitado.
-
Se você estiver usando um par chave, digite este comando:
sftp -iprivate-key-filemyuser@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), insiraus-east-2. -
-
No prompt
sftp>, verifique se é possível fazer upload (put), baixar (get) e visualizar diretórios e arquivos (pwdels).
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:
trueUserHomeDirectory:
/amzn-s3-demo-bucket1UserName:
myuserUserPassword:
MySuperSecretPasswordImportante
Este é um exemplo de senha. Ao configurar seu método do API Gateway, insira uma senha forte.
UserPublicKey1:
your-public-keyUserRoleArn:
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 é único para a função de usuário que você criar. A política do role-idmyuser-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=nomyuser@transfer-server-ID.server.transfer.region-id.amazonaws.com.rproxy.govskope.caInsira sua senha quando for solicitado.
-
Se você estiver usando um par chave para autenticação, execute este comando:
sftp -iprivate-key-filemyuser@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
Abra o console Lambda em. https://console.aws.amazon.com/lambda/
-
Escolha a função do Lambda que você criou anteriormente. A função Lambda tem o formato de
stack-name- GetUserConfigLambda -lambda-identifier, ondestack-nameé o nome da CloudFormation pilha elambda-identifieré o identificador da função. -
Na guia Código, selecione index.js para exibir o código da função.
-
No
response, adicione a seguinte linha entrePolicyeHomeDirectory:PosixProfile: {"Uid":uid-value, "Gid":gid-value},Onde
uid-valueegid-valuesã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 '/' };