Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
General/Custom Exigences d'autorisation pour les développeurs de connecteurs
L'autorisation générale permet à votre connecteur d'utiliser des informations d'identification (telles que des clés d'API, des jetons ou des username/password combinaisons) au lieu de jetons utilisateur OAuth 2.0. Contrairement à OAuth 2.0, qui fournit une autorisation au niveau de l'utilisateur par le biais de la liaison de comptes, l'autorisation générale permet à un seul ensemble d'informations d'identification de contrôler les appareils de plusieurs utilisateurs finaux.
Note
Dans cette documentation, l'autorisation personnalisée est appelée autorisation générale. Les deux termes décrivent le même mécanisme d'autorisation. Dans les sections suivantes, nous utilisons le terme « Autorisation générale » pour des raisons de cohérence.
Cette section explique comment implémenter la prise en charge des autorisations générales dans votre AWS Lambda fonction de connecteur. Si vous êtes un client qui configure l'autorisation générale pour un connecteur existant, consultezGeneral/Custom Exigences en matière d'autorisation.
Rubriques
Qu'est-ce que l'autorisation générale ?
L'autorisation générale est tout mécanisme d'autorisation non OAuth qui permet à votre connecteur d'autoriser des plateformes tierces à l'aide des informations d'identification du client. Avec l'autorisation générale, Managed Integrations délègue la gestion des informations d'identification à votre connecteur, et un seul ensemble d'informations d'identification peut contrôler les appareils de plusieurs utilisateurs finaux.
Cela est utile pour les scénarios dans lesquels vous entretenez une relation commerciale avec le fournisseur de l'appareil et devez gérer les appareils à grande échelle sans flux d'autorisation utilisateur individuels.
Quand utiliser l'autorisation générale
Envisagez d'implémenter la prise en charge des autorisations générales dans votre connecteur lorsque :
-
La plate-forme tierce ne prend pas en charge OAuth 2.0
-
La plate-forme tierce fournit du matériel d'autorisation personnalisé, tel que des clés d'API ou des informations d'identification pouvant résider dans AWS Secrets Manager
-
Vous devez gérer les appareils à grande échelle sans flux d'autorisation utilisateur individuels
Note
Votre connecteur peut implémenter les deux types d'autorisation en parallèle, garantissant ainsi la compatibilité avec divers cadres d'autorisation.
Utilisation de l'autorisation générale AWS Secrets Manager
AWS Secrets Manager est un service de stockage secret qui protège les informations d'identification sensibles telles que les clés API et les jetons. Les secrets sont chiffrés à l'aide de AWS Key Management Service clés. Pour plus d’informations, consultez le Guide de l’utilisateur AWS Secrets Manager.
Pour l'autorisation générale, les clients stockent les informations d'autorisation dans Secrets Manager et accordent à votre connecteur C2C l'autorisation d'accéder à ces secrets. Lorsque les intégrations gérées invoquent votre connecteur, celui-ci fournit l'ARN et l'ID de version de Secrets Manager dans l'en-tête de la demande. Votre connecteur récupère la valeur secrète et l'utilise pour l'autoriser auprès de la plateforme tierce.
Cette approche garantit que les intégrations gérées ne traitent jamais directement les informations d'identification à long terme. Votre connecteur conserve le contrôle total de la gestion des informations d'identification et de la génération de jetons, ce qui rend la solution extensible à tout mécanisme d'autorisation pris en charge par votre plateforme tierce.
Important
Managed Integrations n'accède pas aux informations d'identification stockées dans celles du client et ne les gère pas. AWS Secrets Manager Votre connecteur a un contrôle total sur la récupération, l'analyse et l'utilisation des informations d'identification.
Important
Nous vous recommandons de ne pas enregistrer d'informations d'identification ou de jetons sensibles dans aucun journal. Toutefois, s'ils sont stockés dans des journaux, nous vous recommandons d'utiliser CloudWatch les politiques de protection des données des journaux pour masquer les jetons présents dans les journaux. Pour plus d’informations, consultez Aider à protéger les données sensibles des journaux grâce au masquage.
Format de demande d'autorisation générale
Lorsque Managed Integrations invoque votre connecteur pour une association de comptes d'autorisation générale, l'en-tête de la demande contient une AWS Secrets Manager référence au lieu d'un jeton OAuth. La structure de demande est cohérente pour toutes les opérations du connecteur (AWS.ActivateUserAWS.DiscoverDevices,AWS.SendCommand, etAWS.DeactivateUser).
Exemple Exemple : demande d'autorisation générale
{ "header": { "auth": { "secretsManager": { "arn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-api-key-AbCdEf", "versionId": "a1b2c3d4-5678-90ab-cdef-1234567890ab" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", ... } }
Exemple Exemple : demande OAuth 2.0 (à titre de comparaison)
{ "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", ... } }
Note
Votre connecteur doit gérer les deux formats de demande. Vérifiez le auth.type champ pour déterminer la méthode d'autorisation à utiliser pour chaque demande.
Flux de travail d'autorisation générale
Lorsque votre connecteur reçoit une demande d'autorisation générale, suivez ce flux de travail :
-
Vérifier le type d'autorisation : vérifiez le
auth.typechamp dans l'en-tête de la demande pour déterminer si la demande utilise l'autorisation générale -
Extraire la référence Secrets Manager - Extrayez l' AWS Secrets Manager ARN et l'ID de version de l'
auth.secretsManagerobjet -
Récupérer le secret : appelez l' AWS Secrets Manager
GetSecretValueAPI à l'aide de l'ARN et de l'ID de version fournis -
Analyse des informations d'identification : analyse la valeur secrète pour extraire les informations d'autorisation (le format dépend des exigences de votre plateforme tierce)
-
Générer des jetons (si nécessaire) - Si nécessaire, utilisez les informations d'identification pour générer un jeton d'accès ou effectuez des étapes d'autorisation supplémentaires requises par la plateforme tierce
-
Autoriser les appels d'API : utilisez les informations d'identification ou le jeton généré pour autoriser les appels d'API vers la plateforme tierce
-
Opération du processus - Traitez le fonctionnement du connecteur (
AWS.DiscoverDevices,AWS.SendCommand, etc.) à l'aide de la connexion autorisée
Note
Votre connecteur est responsable de l'ensemble de la gestion des informations d'identification, notamment de la génération des jetons, de l'actualisation et de la gestion des erreurs. Managed Integrations fournit uniquement la référence au secret ; il ne gère pas les informations d'identification elles-mêmes.
Autorisations Lambda pour GeneralAuthorization
Votre rôle d'exécution Lambda du connecteur doit être autorisé à récupérer les secrets auprès du client. AWS Secrets Manager Ajoutez les autorisations suivantes à votre politique de rôle d'exécution Lambda :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.*.amazonaws.com" } } } ] }
Explication de l'autorisation
-
secretsmanager:GetSecretValue- Permet à votre Lambda de récupérer des valeurs secrètes -
kms:Decrypt- Obligatoire car les secrets sont chiffrés à l'aide de AWS Key Management Service clés
Note
L'exemple de politique autorise l'accès à n'importe quel secret. En production, vous devez limiter le Resource champ aux seuls secrets dont votre connecteur a besoin. Toutefois, étant donné que les clients créent leurs propres secrets, vous devrez peut-être utiliser un caractère générique ou documenter la convention de dénomination que les clients doivent suivre.
Le client accordera également à votre Lambda l'autorisation d'accéder à son secret spécifique par le biais de la politique de ressources du secret.