Como posso usar perfis do IAM para restringir chamadas de API de endereços IP específicos para o AWS Management Console?
Quero restringir o acesso às chamadas de API da AWS a endereços IP específicos. Como posso usar as funções do AWS Identity and Access Management (IAM) para limitar o acesso de chamadas de API ao AWS Management Console?
Breve descrição
Você pode usar a chave de condição global aws:SourceIP no elemento de condição de uma política do IAM para restringir chamadas de API de endereços IP específicos. No entanto, isso nega o acesso aos serviços da AWS, como o AWS CloudFormation, que fazem chamadas em seu nome, a menos que você também use a condição global aws:ViaAWSService. Para obter mais informações, consulte AWS: Nega o acesso à AWS com base no IP de origem.
Por exemplo, suponha que você tenha um perfil de serviço da AWS que permita ao AWS CloudFormation chamar o Amazon Elastic Compute Cloud (Amazon EC2) para interromper uma instância. A solicitação é negada porque o serviço de destino (Amazon EC2) vê o endereço IP do serviço de chamada (AWS CloudFormation) em vez do usuário de origem. Você não pode passar o endereço IP de origem por meio de um serviço de chamada para o serviço de destino para avaliação em uma política do IAM.
Resolução
Crie um perfil do IAM com o mesmo conjunto de permissões anexadas à política do IAM anexada ao usuário do IAM. Isso dá ao usuário do IAM permissões para assumir a API sts:AssumeRole do perfil somente se a solicitação for proveniente do endereço IP especificado. Isso ocorre por causa da verificação de restrição aws:SourceIP que é executada quando o usuário tenta assumir a função. Quando o usuário assume o perfil do IAM, ele adquire as permissões da política do IAM que está anexada a ele. Como a política do IAM anexada ao perfil não usa a chave de condição aws:SourceIP, o acesso aos serviços da AWS é permitido.
Crie a seguinte política do IAM e, em seguida, anexe essa política a um usuário do IAM que tenha acesso programático. Essa política do IAM permite que o usuário do IAM assuma um perfil com o nome de Bob. Bob não precisa de permissões adicionais. Todas as outras permissões necessárias são adquiridas quando o usuário do IAM assume com sucesso o perfil Bob.
Observação:
- Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.
- Substitua Bob pelo nome do perfil do IAM e EXAMPLEIAMACCOUNTID pelo ID da sua conta.
Exemplo de política de usuário do IAM
Esse exemplo de política tem permissões para realizar chamadas de API nos recursos da conta.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::EXAMPLEIAMACCOUNTID:role/Bob" } }
Crie o perfil do IAM Bob para delegar permissões ao usuário do IAM. Siga as instruções para Criar um perfil do IAM (Console). Você também pode usar a CLI ou a API da AWS.
Observação:
- Ao usar o console para criar o perfil, modifique a política de confiança do perfil de forma semelhante a este exemplo para a política de confiança Bob. Ao usar a AWS CLI create-role ou a API CreateRole, você pode passar o documento de política de relacionamento de confiança como um valor no parâmetro update-assume-role-policy document.
- A solicitação deve vir do intervalo de endereços IP especificado 103.15.250.0/24 ou 12.148.72.0/23. Caso contrário, o usuário do IAM não poderá assumir o perfil e fazer chamadas de API.
Exemplo de política de confiança de perfis do IAM
Esse exemplo de política de confiança permite que o usuário assuma o perfil se a solicitação for proveniente do intervalo de endereços IP 103.15.250.0/24 ou 12.148.72.0/23.
Observação: Substitua YOURIAMUSERNAME pelo seu nome de usuário do IAM.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:user/YOURIAMUSERNAME" }, "Action": "sts:AssumeRole" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::account-id:user/YOURIAMUSERNAME" }, "Action": "sts:AssumeRole", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "103.15.250.0/24", "12.148.72.0/23" ] } } } ] }
Observação: Essa solução alternativa interrompe os registros do AWS CloudTrail porque as ações são executadas pela função do IAM que o usuário assumiu, não pelo usuário do IAM. A chamada da API assumeRole realizada pelo usuário do IAM é registrada nos registros do CloudTrail sob o usuário do IAM. Todas as chamadas de API adicionais realizadas pelo perfil do IAM são registradas nos registros do CloudTrail com o nome do perfil.
Informações relacionadas
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 3 anos
- Como posso resolver problemas com a troca de perfis do IAM usando o Console de Gerenciamento da AWS?AWS OFICIALAtualizada há um ano