IAM-Genehmiger verwenden
Die IAM-Autorisierung in WebSocket-APIs ist bis auf die folgenden Ausnahmen mit der für REST-APIs vergleichbar:
-
Die Aktion
execute-api
unterstütztManageConnections
zusätzlich zu vorhandenen Aktionen (Invoke
,InvalidateCache
).ManageConnections
steuert den Zugriff auf die API @connections. -
WebSocket-Routen verwenden ein anderes ARN-Format:
arn:aws:execute-api:
region
:account-id
:api-id
/stage-name
/route-key
-
Die API
@connections
verwendet das gleiche ARN-Format wie REST-APIs:arn:aws:execute-api:
region
:account-id
:api-id
/stage-name
/POST/@connections
Sie könnten z. B. die folgende Richtlinie für den Client einrichten. Dieses Beispiel ermöglicht allen Benutzern das Senden einer Nachricht (Invoke
) für alle Routen, außer für eine geheime Route in der Stufe prod
, und hindert alle Benutzer am Senden einer Nachricht zurück an verbundene Clients (ManageConnections
) für alle Stufen.
{ "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
/*" ] } ] }