Configurer 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 sécurisé et compact 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 via les informations d'identification de l'identité AWS IAM qui tente d'accéder à la passerelle.
-
Types d'autorisation déchargés : la passerelle ne prend aucune décision d'autorisation et transfère l'autorisation à un autre composant, tel que la cible en aval, un moteur de politiques attaché à la passerelle ou une fonction Lambda d'interception. Cette catégorie inclut l'authentification uniquement et l'absence d'autorisation. Pour plus de détails et des conseils, consultez la section Autorisation entrante déchargée.
Note
Si vous utilisez la console de AWS gestion ou la AgentCore CLI 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 prévoyez d'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 passerelle pour l'autorisation. Vous pouvez utiliser cette option si vous souhaitez créer une identité IAM grâce à laquelle les utilisateurs qui appellent votre passerelle peuvent être authentifiés.
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é qui contient les autorisations suivantes :
-
bedrock-agentcore:InvokeGateway— Après avoir créé la passerelle, vous devez modifier cette politique afin 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 l'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 AWS Identity and Access Management, consultez 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 un jeton Web JSON (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é compatible. 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 d'une autorisation entrante basée sur les jetons JWT entraînera l'enregistrement de certaines réclamations relatives au jeton JWT. CloudTrail L'entrée inclut le sujet
Vous pouvez utiliser la AgentCore CLI pour configurer un JWT par défaut ou en créer un manuellement avec un fournisseur d'identité compatible. Pour en savoir plus sur les différentes méthodes de configuration d'un JWT, sélectionnez l'une des rubriques suivantes :
Rubriques
Configurer un JWT par défaut
La AgentCore CLI vous permet de créer facilement une configuration d'autorisation par défaut à l'aide d'Amazon Cognito, que vous pouvez ensuite utiliser lors de la création d'une passerelle. Lorsque vous exécutezagentcore create, la CLI vous invite à configurer l'autorisation entrante et peut configurer automatiquement un groupe d'utilisateurs Amazon Cognito pour vous.
agentcore create
Une fois la commande terminée, la AgentCore CLI fournit des informations d'authentification et d'autorisation :
-
Vous utiliserez la configuration de l'autorisateur lors de la création de la passerelle.
-
Pour obtenir une autorisation entrante lorsque vous appelez votre passerelle, vous devez obtenir un jeton d'accès en utilisant votre identifiant client, le secret client et le point de terminaison du jeton. Pour plus d'informations sur la façon d'obtenir votre jeton d'accès, consultez l'exemple relatif à l'utilisation d'une AgentCore passerelle ou 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 dans Configuration et configuration du fournisseur.
Lors de la création du JWT, prenez note des valeurs suivantes, que vous renseignerez CustomJWTAuthorizerConfigurationlorsque vous créerez 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 permettant à l'application cliente de récupérer un jeton.
-
Audience autorisée : identifiant qui valide les destinataires ou consommateurs prévus d'un jeton par le biais de la
audréclamation. -
Étendue autorisée : étendue qui définit les limites de l'accès d'une application au compte d'un utilisateur. Pour plus d'informations, consultez la section OAuth Scopes.
-
Autres valeurs de réclamation obligatoires — En fonction de l'autorisateur que vous utilisez, vous devrez peut-être spécifier des champs de réclamation personnalisés obligatoires et des règles 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 manuel Amazon Cognito Developer Guide.
Portez la publicité sur les défis liés à l'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 indique les étendues OAuth requises. Cela suit le format de défi de jetons RFC 6750 Bearer
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 lesresource_metadataparamètres.
La scope valeur contient les étendues délimitées par des espaces configurées comme étendues autorisées dans celles de la passerelle. CustomJWTAuthorizerConfiguration La resource_metadata valeur pointe vers le document de métadonnées des ressources protégées OAuth/.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 au sein de votre VPC. Vous pouvez configurer un privateEndpoint sur le customJWTAuthorizer pour permettre d'accéder AgentCore à vos points de terminaison OIDC privés, à votre jeton et à vos points de terminaison JWKS sans les exposer à l'Internet public.
Votre principal IAM doit disposer de l'iam:CreateServiceLinkedRoleautorisation nécessaire pour identity-network.bedrock-agentcore.amazonaws.com 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 dans lediscoveryUrl. Si votre fournisseur d'identité utilise des domaines différents pour les 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 des 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 en savoir plus sur Lattice autogéré, les configurations entre comptes et les configurations avancées, voir Se connecter aux 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 Connect to private identity providers.
Autorisation entrante déchargée
Dans le cas d'une autorisation entrante déchargée, la passerelle ne prend aucune décision d'autorisation de son propre chef. Au lieu de cela, il transfère 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'interception, qui exécute votre logique d'authentification ou d'autorisation personnalisée avant que les demandes n'atteignent vos cibles.
AgentCore propose deux types de déchargement :
-
Authentifier uniquement (
AUTHENTICATE_ONLY) — La passerelle vérifie la signature SigV4 de l'appelant pour authentifier l'appelant, 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 être non 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 : attachez 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é conjointement avec OAuth.
-
Fonction Lambda d'interception : exécutez votre propre logique d'authentification ou d'autorisation avant que les demandes n'atteignent vos cibles. Cela 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, afin de pouvoir adopter les fonctionnalités de passerelle progressivement tandis que le moteur d'exécution continue à appliquer l'authentification en laquelle il a déjà confiance.
Important
Si vous déchargez l'autorisation entrante en choisissant l'une AUTHENTICATE_ONLY ou l'autre NONE option, AgentCore Gateway n'applique pas l'autorisation de lui-même. Dans ce scénario, vous devez déléguer l'autorisation à un composant distinct (un moteur de politiques, 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 son propre chef. Tout principal IAM authentifié peut invoquer la passerelle indépendamment de 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 politiques rattaché à 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 politique de la cible ou de la passerelle, tout appelant authentifié peut accéder à vos services principaux.
Aucune autorisation
Vous pouvez créer une passerelle configurée sans autorisation en utilisantauthorizerType=NONE. La passerelle n'effectuera aucune autorisation sur la demande de passerelle entrante et la demande peut être non authentifiée.
Important
N'utilisez pas de passerelles sans autorisation pour les charges de travail de production, sauf si vous avez mis en œuvre toutes les meilleures 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'interception pour gérer l'authentification avant que les demandes n'atteignent vos cibles.
Bonnes 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 place vos propres règles de régulation personnalisées et des contrôles pour garantir 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 couche de sécurité supplémentaire sur la passerelle.
Intégrer un environnement d'exécution existant sans modifier son authentification
Lorsque vous associez un type d'entrée 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 une dérogation de point de terminaison sur votre client existant, aucune modification d'authentification n'est requise :
-
Runtimes IAM — Combinez l'autorisation
AUTHENTICATE_ONLYentrante avec les informations d'identification IAM de l'appelant () et l'autorisation sortante.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 jetons transmet un jeton porteur, il nécessite donc un type d'entrée : JWT-bearing autorisation entrante JWT ou.NONEIl n'est pas disponible avecAUTHENTICATE_ONLY, qui est SigV4-based et ne comporte aucun jeton porteur.) Pour plus d'informations, consultez la section Passthrough de jetons.Note
Token passthrough (
JWT_PASSTHROUGH) n'est pas l'approche recommandée pour la production. Lorsque vous transférez le jeton entrant tel quel, le même jeton est accepté à la fois par la passerelle et par la cible en aval. Il doit donc être étroitement circonscrit. Par exemple, l'audience de chaque jeton (aud) doit être limitée à la ressource prévue. Le modèle recommandé est l'échange de jetons au nom du public (OBO), dans le cadre duquel la passerelle échange le jeton de l'appelant contre un nouveau jeton adapté au public cible au lieu de rejouer le jeton de l'appelant. Utilisez le transfert par jetons pour faciliter l'expérimentation, 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 moteur d'exécution en aval pour autoriser les demandes ; la passerelle n'ajoute aucune autorisation de son propre chef. Ils sont destinés aux tests, à l'expérimentation et à l'intégration nécessitant peu de perturbations. Pour une passerelle de production, appliquez l'autorisation au niveau de la passerelle : configurez l'autorisation entrante JWT ou IAM, attachez un moteur de politiques ou utilisez une fonction Lambda d'interception. Pour vous assurer que les appelants ne peuvent pas contourner la passerelle une fois que vous l'avez adoptée, consultez la section Renforcer le trafic via la passerelle.