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.
Configurez l'autorisation entrante pour votre passerelle
Avant de créer votre passerelle, vous devez configurer l'autorisation entrante. L'autorisation entrante valide les utilisateurs qui tentent d'accéder à des cibles via votre AgentCore passerelle. AgentCore prend en charge les types d'autorisation entrante suivants :
-
JSON Web Token (JWT) : jeton compact et sécurisé utilisé pour l'autorisation. Après avoir créé le JWT, vous le spécifiez comme configuration d'autorisation lorsque vous créez la passerelle. Vous pouvez créer un JWT avec n'importe quel fournisseur d'identité dans Configuration et configuration du fournisseur.
-
Identité IAM : autorise l'accès à la passerelle à l'aide des informations d'identification de l'identité AWS IAM.
-
Types d'autorisations déchargés : la passerelle ne prend aucune décision d'autorisation de son propre chef et transfère l'autorisation à un autre composant, tel que la cible en aval, un moteur de politique attaché à la passerelle ou une fonction Lambda d'interception. Cette catégorie inclut Authentification uniquement et Aucune autorisation. Pour plus de détails et de conseils, consultez la section Autorisation entrante déchargée.
Note
Si vous utilisez la console de AWS gestion ou l' AgentCore interface de ligne de commande pour créer votre passerelle, vous pouvez créer une configuration d'autorisation entrante par défaut à l'aide d'Amazon Cognito lors de la création de la passerelle. Si vous envisagez d'utiliser la configuration d'autorisation par défaut, vous pouvez ignorer cette condition préalable.
Si vous ne prévoyez pas d'utiliser la configuration d'autorisation par défaut à l'aide d'Amazon Cognito, sélectionnez la rubrique correspondant au type d'autorisation que vous comptez utiliser pour savoir comment la configurer :
Rubriques
IAM-based autorisation entrante
IAM-based l'autorisation entrante vous permet d'utiliser les informations d'identification IAM de l'appelant de la passerelle pour l'autorisation. Vous pouvez utiliser cette option si vous souhaitez créer une identité IAM permettant d'authentifier les utilisateurs qui appellent votre passerelle.
Pour configurer l'autorisation IAM-based entrante
-
Créez ou utilisez une identité IAM existante pour les appelants de votre passerelle.
-
Créez une politique IAM basée sur l'identité contenant les autorisations suivantes :
-
bedrock-agentcore:InvokeGateway— Après avoir créé la passerelle, vous devez modifier cette politique de manière à ce que leResourcechamp soit limité à la passerelle que vous créez, conformément aux meilleures pratiques de sécurité.
-
-
Associez la politique à l'identité de l'appelant de la passerelle.
Exemple de stratégie
L'exemple suivant montre une politique que vous pouvez associer à une identité pour lui permettre d'invoquer une passerelle avec cet ID. my-gateway-12345
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGatewayInvocation", "Effect": "Allow", "Action": [ "bedrock-agentcore:InvokeGateway" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway-12345" ] } ] }
Ressources
-
Pour plus d'informations sur la gestion des AWS identités et des accès, consultez la section Gestion des identités et des accès pour Amazon Bedrock AgentCore.
-
Pour plus d'informations sur les AgentCore actions, les ressources et les clés de condition d'Amazon Bedrock que vous pouvez spécifier dans les politiques IAM, consultez Actions, ressources et clés de condition pour Amazon Bedrock. AgentCore
Autorisation entrante basée sur JSON Web Token (JWT)
Un jeton Web JSON (JWT) est un jeton sécurisé et compact utilisé pour l'autorisation. Vous pouvez créer un JWT avec un fournisseur d'identité pris en charge. Après avoir créé un JWT, vous pouvez le récupérer et le spécifier comme configuration d'autorisation lorsque vous créez la passerelle.
Important
L'utilisation de l'autorisation entrante basée sur les jetons JWT entraînera l'enregistrement de certaines revendications relatives au jeton JWT. CloudTrail L'entrée inclut le sujet
Vous pouvez utiliser la AgentCore CLI pour configurer une passerelle avec un fournisseur d'identité JWT existant. Pour en savoir plus sur les méthodes de configuration JWT, sélectionnez l'une des rubriques suivantes :
Rubriques
Configurer un autorisateur JWT
Créez une application et un client avec un fournisseur d'identité pris en charge. Pour un exemple Amazon Cognito, consultez la section Commencer à utiliser Amazon Cognito. Notez l'URL de découverte OIDC et l'ID client.
Exécutez la commande suivante dans le répertoire d'un AgentCore projet :
agentcore add gateway \ --name MyGateway \ --protocol-type MCP \ --authorizer-type CUSTOM_JWT \ --discovery-url <OIDC_DISCOVERY_URL> \ --allowed-clients <CLIENT_ID>
La AgentCore CLI utilise la configuration OIDC existante ; elle ne crée pas les ressources du fournisseur d'identité. Pour invoquer la passerelle, procurez-vous un jeton d'accès auprès de votre fournisseur. Pour Amazon Cognito, consultez la section Le point de terminaison de l'émetteur du jeton dans le guide du développeur Amazon Cognito.
Configurer un JWT manuellement
Amazon Bedrock AgentCore prend en charge les JWT de tous les fournisseurs d'identité. Vous pouvez voir quelques exemples sur la page Configuration et configuration du fournisseur.
Lors de la création du JWT, prenez note des valeurs suivantes, que vous devrez remplir CustomJWTAuthorizerConfiguration lors de la création d'une passerelle, si elles s'appliquent à votre cas d'utilisation :
-
URL de découverte : URL à partir de laquelle les informations de connexion et le point de terminaison du jeton peuvent être récupérés.
-
ID client : identifiant public d'une application cliente qui demande un jeton, validé par rapport à la
client_idréclamation. -
Secret du client : clé privée qui authentifie l'accès pour que l'application cliente puisse récupérer un jeton.
-
Audience autorisée : identifiant qui valide les destinataires ou les consommateurs prévus d'un jeton via la
audréclamation. -
Étendues autorisées : étendues qui définissent les limites de l'accès d'une application au compte d'un utilisateur. Pour plus d'informations, consultez OAuth Scopes.
-
Autres valeurs de réclamation requises : selon l'autorisateur que vous utilisez, vous devrez peut-être spécifier les champs de réclamation personnalisés et les règles nécessaires pour faire correspondre la valeur du champ de réclamation à des fins d'authentification.
Vous aurez besoin de ces valeurs pour effectuer les opérations suivantes :
-
Créez la passerelle en spécifiant des valeurs dans la configuration de l'autorisateur.
-
Obtenez des informations d'autorisation pour appeler la passerelle. Pour savoir comment obtenir vos informations d'identification, consultez la documentation de votre fournisseur d'identité. Par exemple, si vous avez utilisé Amazon Cognito, consultez le point de terminaison de l'émetteur du jeton dans le guide du développeur Amazon Cognito.
Portez la publicité dans les défis d'authentification
Lorsqu'un client envoie une demande à une JWT-authorized passerelle sans jeton d'accès valide, la passerelle renvoie une réponse d'erreur avec un WWW-Authenticate en-tête qui annonce les étendues OAuth requises. Cela suit le format de défi de jetons
La passerelle renvoie les réponses suivantes en fonction de l'erreur :
-
401 Non autorisé — La demande ne contient aucun jeton ou un jeton non valide. L'
WWW-Authenticateen-tête inclutresource_metadatadesscopeparamètres. -
403 Interdit — Le jeton est valide mais ne contient pas les étendues requises. L'
WWW-Authenticateen-tête incluterror="insufficient_scope"scope, et desresource_metadataparamètres.
La scope valeur contient les étendues délimitées par des espaces configurées comme étendues autorisées dans la passerelle. CustomJWTAuthorizerConfiguration La resource_metadata valeur pointe vers le document de métadonnées des ressources protégées /.well-known/oauth-protected-resource, que les clients peuvent récupérer pour découvrir le serveur d'autorisation et les étendues prises en charge.
Utiliser un fournisseur d'identité privé (VPC-hosted)
AgentCore Gateway prend en charge JWT-based l'autorisation entrante auprès des fournisseurs d'identité hébergés dans votre VPC. Vous pouvez configurer un privateEndpoint sur le customJWTAuthorizer pour permettre d'accéder AgentCore à vos points de terminaison OIDC privés de découverte, de jeton et de JWKS sans les exposer à l'Internet public.
Votre responsable IAM doit disposer de l'iam:CreateServiceLinkedRoleautorisation pouridentity-network.bedrock-agentcore.amazonaws.com, afin qu' AgentCore Identity puisse créer le rôle AWSServiceRoleForBedrockAgentCoreIdentity lié au service en votre nom s'il n'existe pas déjà.
privateEndpointCela s'applique au domaine dudiscoveryUrl. Si votre fournisseur d'identité utilise des domaines différents pour d'autres points de terminaison (par exemple, le jeton ou le point de terminaison JWKS renvoie à un domaine différent de celui de l'URL de découverte), utilisez cette option privateEndpointOverrides pour spécifier une configuration de point de terminaison privé distincte pour chaque domaine supplémentaire.
L'exemple suivant crée une passerelle avec un fournisseur d'identité privé à l'aide de Lattice géré :
{ "name": "my-private-idp-gateway", "protocolType": "MCP", "roleArn": "arn:aws:iam::123456789012:role/my-gateway-role", "authorizerType": "CUSTOM_JWT", "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": [ "my-audience" ], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": ["subnet-0abc123", "subnet-0def456"], "endpointIpAddressType": "IPV4", "securityGroupIds": ["sg-0abc123def"] } } } } }
Si votre jeton ou vos points de terminaison JWKS utilisent un domaine différent de celui de l'URL de découverte, ajoutez une privateEndpointOverrides entrée pour chaque domaine supplémentaire. Actuellement, n'privateEndpointOverridesest pris en charge qu'avec les ressources Lattice autogérées :
{ ... "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": ["my-audience"], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123" } }, "privateEndpointOverrides": [ { "domain": "my-token-server.internal.example.com", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-def456" } } } ] } } }
Pour connaître Lattice autogéré, les configurations multicomptes et les configurations avancées, consultez Connexion à des ressources privées de votre VPC à l'aide de VPC Lattice. Pour un guide complet couvrant les scénarios d'IdP privés entrants et sortants, voir Connexion à des fournisseurs d'identité privés.
Autorisation entrante déchargée
Avec l'autorisation entrante déchargée, la passerelle ne prend aucune décision d'autorisation de sa propre initiative. Au lieu de cela, il délègue l'autorisation à un autre composant :
-
Le service cible en aval, qui autorise la demande qu'il reçoit.
-
Un moteur de politiques attaché à la passerelle, qui évalue les politiques d'accès.
-
Une fonction Lambda d'intercepteur, qui exécute votre logique d'authentification ou d'autorisation personnalisée avant que les requêtes n'atteignent vos cibles.
AgentCore propose deux types de fichiers déchargés :
-
Authentification uniquement (
AUTHENTICATE_ONLY) : la passerelle vérifie la signature SIGv4 de l'appelant pour l'authentifier, mais ne prend aucune décision d'autorisation. Les demandes doivent être signées, mais tout appelant authentifié est redirigé vers la cible. -
Aucune autorisation (
NONE) : la passerelle n'effectue aucune authentification ou autorisation entrante. Les demandes peuvent ne pas être authentifiées et tout appelant est redirigé vers la cible.
Quel que soit le type, vous décidez où l'autorisation est réellement appliquée :
-
Moteur de politiques : associez un moteur de politiques à la passerelle pour évaluer les politiques d'accès de manière centralisée. Il s'agit d'un modèle recommandé pour les passerelles de production et il est fréquemment utilisé avec OAuth.
-
Fonction Interceptor Lambda : exécutez votre propre logique d'authentification ou d'autorisation avant que les requêtes n'atteignent vos cibles. Ceci est recommandé pour les passerelles de production lorsque les options d'autorisation entrantes intégrées ne répondent pas à vos exigences.
-
Cible en aval : laissez la cible appliquer l'autorisation à la demande qu'elle reçoit. Cela est utile pour l'expérimentation et l'intégration progressive, par exemple pour placer une passerelle devant un environnement d'exécution existant sans modifier l'authentification et l'autorisation du moteur d'exécution. Vous pouvez ainsi adopter les fonctionnalités de passerelle de manière incrémentielle pendant que le moteur d'exécution continue d'appliquer l'authentification à laquelle il fait déjà confiance.
Important
Si vous déchargez l'autorisation entrante en choisissant l'une AUTHENTICATE_ONLY ou l'autre des optionsNONE, AgentCore Gateway n'applique pas l'autorisation à elle seule. Dans ce scénario, vous devez déléguer l'autorisation à un composant distinct (un moteur de politique, une fonction Lambda d'interception ou la cible en aval), sinon n'importe quel appelant peut atteindre votre cible.
Authenticate-only autorisation
Avec l'autorisation d'authentification uniquement (AUTHENTICATE_ONLY), la passerelle vérifie la signature Signature Version 4 (Sigv4) de l'appelant pour confirmer son identité, mais ne prend aucune décision d'autorisation de sa propre initiative. Tout principal IAM authentifié peut invoquer la passerelle quelles que soient ses autorisations, et la demande est transmise à la cible. L'autorisation est déléguée au service cible en aval ou à un moteur de politique connecté à la passerelle.
Important
AvecAUTHENTICATE_ONLY, la passerelle n'applique aucune politique d'autorisation. Toute SigV4-signed demande valide sera transmise à la cible. Assurez-vous que vos cibles en aval mettent en œuvre leur propre logique d'autorisation, ou associez un moteur de politiques à la passerelle pour contrôler l'accès. Sans autorisation appropriée au niveau de la cible ou de la politique de passerelle, tout appelant authentifié peut accéder à vos services principaux.
Aucune autorisation
Vous pouvez créer une passerelle configurée sans autorisation à l'aide deauthorizerType=NONE. La passerelle n'effectuera aucune autorisation sur la demande de passerelle entrante et celle-ci peut ne pas être authentifiée.
Important
N'utilisez pas de passerelles sans autorisation pour les charges de travail de production à moins d'avoir mis en œuvre toutes les bonnes pratiques de sécurité répertoriées ci-dessous. Si vous avez besoin d'une logique d'authentification personnalisée, pensez à utiliser une fonction Lambda d'intercepteur pour gérer l'authentification avant que les requêtes n'atteignent vos cibles.
Meilleures pratiques en matière de sécurité
-
Utilisez la clé de
bedrock-agentcore:GatewayAuthorizerTypecondition pour allow/deny accéder de manière sélective au sein de votre organisation afin de créer des passerelles avecauthorizerType=NONE -
N'utilisez pas de passerelles sans autorisation pour des raisons de commodité pour les tests. Ils doivent être utilisés pour les passerelles que vous avez l'intention de rendre publiques, mais que vous avez mis en œuvre vos propres règles de limitation personnalisées et des contrôles pour vous assurer que votre passerelle publique peut gérer les utilisateurs non authentifiés.
-
N'utilisez pas de passerelles sans autorisation avec des cibles susceptibles de répondre avec des informations sensibles. Bien que les cibles soient configurées avec leurs propres configurations d'autorisation, il est préférable d'ajouter une autre couche de sécurité sur la passerelle.
Intégrer un environnement d'exécution existant sans modifier son authentification
Lorsque vous associez un type entrant déchargé à un type d'autorisation sortant correspondant qui transmet l'identité de l'appelant au moteur d'exécution, l'intégration à une passerelle peut être aussi simple que de définir un remplacement de point de terminaison sur votre client existant. Aucune modification d'authentification n'est requise :
-
Runtimes IAM : combinez l'autorisation entrante avec
AUTHENTICATE_ONLYl'autorisation sortante des informations d'identification IAM de l'appelant ().CALLER_IAM_CREDENTIALSLa passerelle authentifie l'appelant SIGv4, puis signe la demande au moteur d'exécution avec la même identité d'appelant, de sorte que l'autorisation IAM existante du moteur d'exécution continue de s'appliquer sans modification. Pour plus d'informations, consultez la section Informations d'identification IAM de l'appelant. -
Runtimes OAuth : combinez l'autorisation entrante sans autorisation avec l'autorisation sortante Token passthrough ().
JWT_PASSTHROUGHLa passerelle transmet le JWT entrant au moteur d'exécution sans modification, de sorte que le moteur d'exécution valide le jeton exactement comme il le fait aujourd'hui. (Le transfert de jeton transmet un jeton porteur, il nécessite donc un type JWT-bearing entrant : autorisation entrante JWT ou.NONEIl n'est pas disponible avecAUTHENTICATE_ONLY, qui est SigV4-based et ne porte aucun jeton au porteur.) Pour plus d'informations, consultez la section Token Passthrough.Note
Token passthrough (
JWT_PASSTHROUGH) n'est pas l'approche recommandée pour la production. Lorsque vous transférez le jeton entrant inchangé, le même jeton est accepté à la fois par la passerelle et par la cible en aval. Il doit donc être étroitement défini. Par exemple, l'audience (aud) de chaque jeton doit être limitée à la ressource prévue. Le modèle recommandé est l'échange de jetons pour le compte (OBO), où la passerelle échange le jeton de l'appelant contre un nouveau jeton destiné à l'audience cible au lieu de rejouer le jeton de l'appelant. Utilisez le transfert de jetons pour faciliter les expériences, les tests et l'intégration, et passez à OBO pour les charges de travail de production à long terme.
Avertissement
Les configurations de transfert d'identité présentées dans cette section s'appuient uniquement sur le runtime en aval pour autoriser les demandes ; la passerelle n'ajoute aucune autorisation propre. Ils sont destinés à des fins de test, d'expérimentation et d'intégration à faible interruption. Pour une passerelle de production, appliquez l'autorisation au niveau de la passerelle : configurez l'autorisation entrante JWT ou IAM, connectez un moteur de politique ou utilisez une fonction Lambda d'intercepteur. Pour vous assurer que les appelants ne peuvent pas contourner la passerelle une fois que vous l'avez adoptée, consultez la section Application du trafic via la passerelle.