Controlar o acesso a APIs de WebSocket com autorização do IAM
A autorização do IAM em APIs WebSocket é semelhante à utilizada para APIs REST, com as seguintes exceções:
-
A ação
execute-api
oferece suporte aManageConnections
, além de ações existentes (Invoke
,InvalidateCache
).ManageConnections
controla o acesso à API @connections. -
As rotas do WebSocket utilizam um formato diferente de ARN:
arn:aws:execute-api:
region
:account-id
:api-id
/stage-name
/route-key
-
A API
@connections
utiliza o mesmo formato de ARN presente nas APIs REST:arn:aws:execute-api:
region
:account-id
:api-id
/stage-name
/POST/@connections
Importante
Ao usar a Autorização do IAM, é necessário assinar solicitações com o Signature Version 4 (SigV4).
Por exemplo, você pode configurar a política a seguir ao cliente: Este exemplo permite que todas as pessoas enviem uma mensagem (Invoke
) a todas as rotas, exceto para uma rota secreta no estágio prod
, além de impedir que qualquer pessoa envie uma mensagem aos clientes conectados (ManageConnections
) para todos os estágios.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:
us-east-1
:account-id
:api-id
/prod/*" ] }, { "Effect": "Deny", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1
:account-id
:api-id
/prod/secret" ] }, { "Effect": "Deny", "Action": [ "execute-api:ManageConnections" ], "Resource": [ "arn:aws:execute-api:us-east-1
:account-id
:api-id
/*" ] } ] }