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á.
Abordagens dinâmicas de gerenciamento de permissões
Entendendo a arquitetura de permissão do Transfer Family
AWS Transfer Family oferece suporte ao gerenciamento dinâmico de permissões por meio de políticas de sessão, que permitem restringir as permissões efetivas das funções do IAM em tempo de execução. Essa abordagem funciona tanto para usuários gerenciados por serviços quanto para usuários de provedores de identidade personalizados, mas só é suportada na transferência de arquivos de ou para o Amazon S3 (não para o Amazon EFS).
Cada AWS Transfer Family usuário opera com um modelo de permissão que consiste em:
-
Função básica do IAM - Define as permissões básicas para o usuário
-
Política de sessão opcional - restringe (reduz o escopo) as permissões básicas em tempo de execução
As permissões efetivas são a interseção das permissões da função básica e das permissões da política de sessão. As políticas de sessão só podem restringir as permissões; elas não podem conceder permissões adicionais além do permitido pela função básica.
Essa arquitetura se aplica aos dois tipos de usuário:
-
Usuários gerenciados por serviços - as políticas de sessão podem ser configuradas diretamente nas configurações do usuário
-
Usuários de provedores de identidade personalizados - as políticas de sessão podem ser retornadas como parte da resposta de autenticação ou armazenadas em AWS Secrets Manager
Duas abordagens para o gerenciamento de permissões
Ao criar permissões para usuários do Transfer Family que precisam de padrões de acesso exclusivos, você pode escolher entre duas abordagens principais:
- Uma função por usuário
-
Crie uma função do IAM separada para cada usuário do Transfer Family com permissões específicas adaptadas às necessidades desse usuário. Use essa abordagem quando:
-
Cada usuário requer permissões muito diferentes
-
A administração de permissões é feita por diferentes pessoas em sua organização
-
Você precisa de um controle refinado sobre o acesso individual do usuário
-
- Função compartilhada com políticas de sessão
-
Use uma única função do IAM com amplas permissões (como acesso a um bucket inteiro do Amazon S3 contendo vários diretórios iniciais de usuários) e aplique políticas de sessão para restringir cada usuário à sua área específica. Essa abordagem reduz significativamente a sobrecarga administrativa em comparação com o gerenciamento de funções separadas para cada usuário. Use essa abordagem quando:
-
Os usuários precisam de tipos de acesso semelhantes, mas a recursos diferentes (por exemplo, todos os usuários precisam read/write acessar, mas cada um somente à sua própria pasta)
-
Você quer simplificar o gerenciamento de funções e evitar a criação de dezenas ou centenas de funções individuais
-
Os usuários só devem acessar seus diretórios iniciais designados em um bucket compartilhado
-
A administração de permissões é centralizada em sua organização
Por exemplo, em vez de criar funções separadas para os usuários “alice”, “bob” e “charlie”, você pode criar uma função com acesso a todo o
s3://company-transfers/bucket e, em seguida, usar políticas de sessão para restringir alice as3://company-transfers/alice/, bob tos3://company-transfers/bob/e assim por diante. -
Implementando políticas de sessão
As políticas de sessão funcionam restringindo as permissões efetivas da função básica do IAM atribuída a um usuário. As permissões finais são a interseção das permissões da função e das permissões da política de sessão.
Você pode implementar políticas de sessão dinâmicas de duas maneiras:
- Substituição de variáveis
-
Use variáveis de política do Transfer Family
${transfer:Username}, como${transfer:HomeDirectory}, e${transfer:HomeBucket}em suas políticas de sessão. Essas variáveis são substituídas automaticamente pelos valores reais em tempo de execução. Para obter mais informações sobre essas variáveis, consulteCriar uma política de sessão de um bucket do Amazon S3. - Geração dinâmica
-
Para provedores de identidade personalizados, gere políticas de sessão on-the-fly como parte da resposta de autenticação da sua função Lambda ou método do API Gateway. Essa abordagem permite criar políticas altamente personalizadas com base em atributos do usuário, associações a grupos ou fontes de dados externas no momento da autenticação.
Você também pode armazenar políticas de sessão AWS Secrets Manager pré-geradas incluindo uma chave nomeada
Policycom o JSON da política de sessão como valor. Isso permite que você use a mesma função ampla do IAM em vários usuários, mantendo os controles de acesso específicos do usuário.
nota
As políticas de sessão são suportadas somente para transferências de arquivos de e para o Amazon S3. Eles não se aplicam aos sistemas de arquivos do Amazon EFS. Para o Amazon EFS, as permissões são governadas UID/GID e os bits de permissão aplicados dentro do próprio sistema de arquivos.
Implementação por tipo de usuário
- Usuário gerenciados por serviços
-
Para usuários gerenciados por serviços, você pode especificar políticas de sessão diretamente na configuração do usuário por meio do AWS Transfer Family console, da API ou da CLI. Para obter mais informações, consulte Trabalhar com usuários gerenciados por serviços.
- Usuários de provedores de identidade personalizados
-
Para usuários de provedores de identidade personalizados, você pode fornecer políticas de sessão de duas maneiras:
-
AWS Secrets Manager Incluindo uma chave nomeada
Policycom a política de sessão como valor -
Diretamente na resposta da função Lambda ou na resposta do API Gateway como parte do resultado da autenticação
Para obter mais informações, consulte Solução personalizada de provedor de identidade.
-
Exemplo: simplificação do gerenciamento de funções com políticas de sessão
Este exemplo demonstra como o gerenciamento dinâmico de permissões pode reduzir significativamente a sobrecarga administrativa e, ao mesmo tempo, manter a segurança.
Cenário
Sua organização tem 50 usuários que precisam de acesso SFTP para transferir arquivos. Cada usuário só deve acessar sua própria pasta dentro de um bucket compartilhado do Amazon S3 chamado. company-transfers Sem as políticas de sessão, você precisaria criar 50 funções diferentes do IAM.
- Abordagem tradicional (sem políticas de sessão)
-
-
Crie 50 funções do IAM:
TransferRole-Alice,TransferRole-Bob,TransferRole-Charlie, etc. -
Cada função tem permissões específicas somente para a pasta desse usuário
-
O gerenciamento de permissões requer a atualização de funções individuais
-
Adicionar novos usuários requer a criação de novas funções
-
- Abordagem dinâmica (com políticas de sessão)
-
-
Crie 1 função do IAM:
TransferRole-Sharedcom amplas permissões para todo o bucket -
Use políticas de sessão para restringir cada usuário à sua pasta específica em tempo de execução
-
O gerenciamento de permissões requer a atualização de uma função ou modelo de política de sessão
-
Adicionar novos usuários não requer novas funções, apenas configuração do usuário
-
Implementação
Veja como você implementaria a abordagem dinâmica (usando o company-transfers bucket como exemplo para ser substituído pelo seu bucket real do Amazon S3):
Para implementar o gerenciamento dinâmico de permissões
-
Crie uma função compartilhada do IAM com amplas permissões do Amazon S3:
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::company-transfers/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::company-transfers" } ] }
-
Crie um modelo de política de sessão que restrinja o acesso à pasta do usuário:
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::company-transfers/${transfer:Username}/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::company-transfers", "Condition": { "StringLike": { "s3:prefix": "${transfer:Username}*" } } } ] }
-
Configure cada usuário com:
-
A função compartilhada do IAM
-
A política de sessão foi aplicada da seguinte forma:
-
Usuários gerenciados por serviços: use a API ou a CLI para aplicar o JSON por meio do parâmetro Policy ao criar ou modificar usuários (o console oferece apenas opções de política predefinidas)
-
Usuários de provedores de identidade personalizados: retorne-a como parte da resposta da função Lambda durante a autenticação ou armazene-a AWS Secrets Manager como uma chave chamada “Política” junto com as credenciais do usuário
-
-
Diretório inicial:
/company-transfers/${transfer:Username}/
-