Les entreprises clientes ont plusieurs secteurs d'activité (LOB) et groupes et équipes en leur sein. Ces clients doivent équilibrer la gouvernance, la sécurité et la conformité avec la nécessité pour les équipes d'apprentissage automatique (ML) d'accéder rapidement à leurs environnements de science des données de manière sécurisée. Ces entreprises clientes qui commencent à adopter AWS, étendent leur empreinte sur AWS ou envisagent d'améliorer un environnement AWS établi doivent s'assurer qu'elles disposent d'une base solide pour leur environnement cloud. Un aspect important de cette fondation est d'organiser leur environnement AWS selon une stratégie multi-comptes.
Dans la poste Sécuriser les URL pré-signées d'Amazon SageMaker Studio Partie 2 : API privée avec authentification JWT, nous avons montré comment créer une API privée pour générer Amazon SageMakerStudio URL pré-signées accessibles uniquement par un utilisateur final authentifié au sein du réseau d'entreprise à partir d'un compte unique. Dans cet article, nous montrons comment vous pouvez étendre cette architecture à plusieurs comptes pour prendre en charge plusieurs LOB. Nous montrons comment vous pouvez utiliser les URL pré-signées de Studio dans un environnement multicompte pour sécuriser et acheminer l'accès de différentes personnes vers leur domaine Studio approprié. Nous expliquons le processus et le flux de réseau, et comment adapter facilement cette architecture à plusieurs comptes et Amazon Sage Maker domaines. La solution proposée garantit également que tout le trafic réseau reste dans le réseau privé d'AWS et que la communication se déroule de manière sécurisée.
Bien que nous démontrions l'utilisation de deux LOB différents, chacun avec un compte AWS distinct, cette solution peut évoluer vers plusieurs LOB. Nous introduisons également une construction logique d'un compte de services partagés qui joue un rôle clé dans la gouvernance, l'administration et l'orchestration.
Vue d'ensemble de la solution
Nous pouvons établir une communication entre les VPC SageMaker de tous les LOB et le VPC du compte de services partagés en utilisant soit l'appairage de VPC, soit Passerelle de transit AWS. Dans cet article, nous utilisons une passerelle de transit car elle fournit un mécanisme de communication VPC à VPC plus simple via l'appairage de VPC lorsqu'un grand nombre de VPC sont impliqués. Nous utilisons également Amazon Route 53 des règles de transfert en combinaison avec des résolveurs entrants et sortants pour résoudre toutes les requêtes DNS vers les points de terminaison VPC du compte de service partagé. L'architecture réseau a été conçue à l'aide des modèles suivants :
Examinons plus en détail les deux principaux composants de l'architecture, le flux d'informations et le flux réseau.
Flux d'information
Le schéma suivant illustre l'architecture du flux d'informations.
Les étapes du flux de travail sont les suivantes :
- L'utilisateur s'authentifie avec le Amazon Cognito groupe d'utilisateurs et reçoit un jeton pour consommer l'API d'accès au Studio.
- L'utilisateur appelle l'API pour accéder à Studio et inclut le jeton dans la requête.
- Lorsque cette API est invoquée, la coutume AWS Lambda Le mécanisme d'autorisation est déclenché pour valider le jeton auprès du fournisseur d'identité (IdP) et renvoie les autorisations appropriées pour l'utilisateur.
- Une fois l'appel autorisé, une fonction Lambda est déclenchée.
- Cette fonction Lambda utilise le nom de l'utilisateur pour récupérer son nom LOB et le compte LOB à partir des éléments suivants Amazon DynamoDB tables qui stockent ces relations :
- Table des utilisateurs – Cette table contient la relation entre les utilisateurs et leur LOB.
- Tableau des LOB – Cette table contient la relation entre les LOB et le compte AWS où le domaine SageMaker pour ce LOB existe.
- Avec l'ID de compte, la fonction Lambda assume le rôle PresignedUrlGenerator dans ce compte (chaque compte LOB a un rôle PresignedURLGenerator qui ne peut être assumé que par la fonction Lambda chargée de générer les URL présignées).
- Enfin, la fonction invoque l'appel d'API SageMaker create-presigned-domain-url pour cet utilisateur dans le domaine SageMaker de son LOB.
- L'URL présignée est renvoyée à l'utilisateur final, qui la consomme via le point de terminaison du VPC Studio.
Les étapes 1 à 4 sont décrites plus en détail dans Partie 2 de cette série, où nous expliquons comment l'autorisateur Lambda personnalisé fonctionne et prend en charge le processus d'autorisation dans la passerelle API d'accès.
Flux réseau
Tout le trafic réseau circule de manière sécurisée et privée en utilisant Lien privé AWS, comme le montre le schéma suivant.
Les étapes sont les suivantes:
- Lorsque l'utilisateur appelle l'API d'accès, cela se produit via le point de terminaison du VPC pour Passerelle d'API Amazon dans le réseau VPC du compte de services partagés. Cette API est définie comme privée et possède une politique qui autorise sa consommation uniquement via ce point de terminaison de VPC, comme décrit dans Partie 2 de cette série.
- Tout le processus d'autorisation se déroule en privé entre API Gateway, Lambda et Amazon Cognito.
- Une fois l'autorisation accordée, API Gateway déclenche la fonction Lambda chargée de générer les URL pré-signées à l'aide du réseau privé d'AWS.
- Ensuite, étant donné que la fonction Lambda de routage réside dans un VPC, tous les appels vers différents services passent par leurs points de terminaison VPC respectifs dans le compte de services partagés. La fonction effectue les actions suivantes :
- Récupérez les informations d'identification pour assumer le rôle via le Service de jeton de sécurité AWS (AWS STS) Point de terminaison VPC dans le compte réseau.
- Appelez DynamoDB pour récupérer les informations utilisateur et LOB via le point de terminaison du VPC DynamoDB.
- Appelez l'API SageMaker pour créer une URL pré-signée pour l'utilisateur dans son domaine SageMaker via le point de terminaison VPC de l'API SageMaker.
- L'utilisateur consomme enfin l'URL présignée via le point de terminaison du VPC Studio dans le VPC réseau du compte de services partagés, car ce point de terminaison du VPC a été spécifié lors de la création de l'URL présignée.
- Toutes les autres communications entre Studio et les services AWS se font via l'ENI de Studio dans le VPC SageMaker du compte LOB. Par exemple, pour permettre à SageMaker d'appeler Registre des conteneurs élastiques Amazon (Amazon ECR), le point de terminaison du VPC de l'interface Amazon ECR peut être provisionné dans le VPC du compte de services partagés, et une règle de transfert est partagée avec les comptes SageMaker qui ont besoin de la consommer. Cela permet aux requêtes SageMaker vers Amazon ECR d'être résolues vers ce point de terminaison, et le routage Transit Gateway fera le reste.
Pré-requis
Pour représenter un environnement multicompte, nous utilisons un compte de services partagés et deux LOB différents :
- Compte de services partagés – Où les points de terminaison de VPC et l'API de passerelle d'accès Studio vivent
- Compte SageMaker LOB A – Le compte du domaine SageMaker pour LOB A
- Compte SageMaker LOB B – Le compte du domaine SageMaker pour LOB B
Pour plus d'informations sur la création d'un compte AWS, reportez-vous à Comment créer et activer un nouveau compte AWS.
Les comptes métier sont des entités logiques spécifiques à une entreprise, un service ou un domaine. Nous supposons un compte par entité logique. Cependant, il y aura différents comptes par environnement (développement, test, production). Pour chaque environnement, vous disposez généralement d'un compte de services partagés distinct (basé sur les exigences de conformité) pour limiter le rayon d'explosion.
Vous pouvez utiliser les modèles et les instructions du GitHub référentiel mettre en place l'infrastructure nécessaire. Ce référentiel est structuré en dossiers pour les différents comptes et les différentes parties de la solution.
Configuration des infrastructures
Pour les grandes entreprises disposant de nombreux domaines Studio, il est également conseillé d'avoir une architecture de point de terminaison centralisée. Cela peut entraîner des économies de coûts à mesure que l'architecture évolue et que davantage de domaines et de comptes sont créés. Le modèle networking.yml dans le compte de services partagés déploie les points de terminaison VPC et les ressources Route 53 nécessaires, ainsi que l'infrastructure Transit Gateway pour faire évoluer la solution proposée.
Des instructions détaillées sur le déploiement sont disponibles dans le fichier README.md du référentiel GitHub. Le déploiement complet inclut les ressources suivantes :
- Deux AWS CloudFormation modèles dans le compte de services partagés : un pour l'infrastructure réseau et un pour Modèle d'application sans serveur AWS (AWS SAM) API de passerelle d'accès à Studio
- Un modèle CloudFormation pour l'infrastructure du compte SageMaker LOB A
- Un modèle CloudFormation pour l'infrastructure du compte SageMaker LOB B
- En option, un simulateur sur site peut être déployé dans le compte de services partagés pour tester le déploiement de bout en bout
Une fois que tout est déployé, accédez à la console Transit Gateway pour chaque compte SageMaker (comptes LOB) et confirmez que la passerelle de transit a été correctement partagée et que les VPC lui sont associés.
Facultativement, si des règles de transfert ont été partagées avec les comptes, elles peuvent être associées au VPC des comptes SageMaker. Les règles de base pour faire fonctionner la solution de points de terminaison VPC centralisée sont automatiquement partagées avec le compte LOB lors du déploiement. Pour plus d'informations sur cette approche, reportez-vous à Accès centralisé aux points de terminaison privés du VPC.
Remplir les données
Exécutez le script suivant pour remplir les tables DynamoDB et le groupe d'utilisateurs Amazon Cognito avec les informations requises :
Le script effectue les appels d'API requis à l'aide de la Interface de ligne de commande AWS (AWS CLI) et les paramètres et profils précédemment configurés.
Utilisateurs d'Amazon Cognito
Cette étape fonctionne de la même manière que Partie 2 de cette série, mais doit être effectuée pour les utilisateurs de tous les LOB et doit correspondre à leur profil d'utilisateur dans SageMaker, quel que soit le LOB auquel ils appartiennent. Pour cet article, nous avons un utilisateur dans un domaine Studio dans LOB A (user-lob-a) et un utilisateur dans un domaine Studio dans LOB B (user-lob-b). Le tableau suivant répertorie les utilisateurs renseignés dans le groupe d'utilisateurs Amazon Cognito.
Utilisateur | Mot de Passe |
utilisateur-lob-a | UserLobA1 ! |
utilisateur-lob-b | UserLobB1 ! |
Notez que ces mots de passe ont été configurés à des fins de démonstration.
Tables DynamoDB
L'application d'accès utilise deux tables DynamoDB pour diriger les demandes des différents utilisateurs vers le domaine Studio de leur LOB.
La table des utilisateurs contient la relation entre les utilisateurs et leur LOB.
Clé primaire | LOB |
utilisateur-lob-a | lob-un |
utilisateur-lob-b | lob-b |
La table LOB contient la relation entre le LOB et le compte AWS où le domaine SageMaker pour ce LOB existe.
LOB | IDENTIFIANT DE COMPTE |
lob-un | <YOUR_LOB_A_ACCOUNT_ID> |
lob-b | <YOUR_LOB_B_ACCOUNT_ID> |
Notez que ces noms d'utilisateur doivent être cohérents entre les profils d'utilisateurs Studio et les noms des utilisateurs que nous avons précédemment ajoutés au groupe d'utilisateurs Amazon Cognito.
Tester le déploiement
À ce stade, nous pouvons tester le déploiement vers API Gateway et vérifier ce que l'API répond pour l'un des utilisateurs. Nous obtenons une URL pré-signée dans la réponse ; cependant, la consommation de cette URL dans le navigateur générera une erreur de jeton d'authentification.
Pour cette démo, nous avons mis en place un environnement simulé sur site avec un hôte bastion et une application Windows. Nous installons Firefox dans l'instance Windows et utilisons les outils de développement pour ajouter des en-têtes d'autorisation à nos requêtes et tester la solution. Des informations plus détaillées sur la configuration de l'environnement simulé sur site sont disponibles dans le référentiel GitHub associé.
Le diagramme suivant montre notre architecture de test.
Nous avons deux utilisateurs, un pour LOB A (utilisateur A) et un autre pour LOB B (utilisateur B), et nous montrons comment le domaine Studio change simplement en changeant la clé d'autorisation récupérée d'Amazon Cognito lors de la connexion en tant qu'utilisateur A et utilisateur. B
Effectuez les étapes suivantes pour tester le déploiement :
- Récupérez le jeton de session pour l'utilisateur A, comme indiqué dans Partie 2 de la série et également dans les instructions du référentiel GitHub.
Nous utilisons l'exemple de commande suivant pour obtenir les informations d'identification de l'utilisateur auprès d'Amazon Cognito :
- Pour cette démonstration, nous utilisons une application Windows simulée sur site. Pour vous connecter à l'instance Windows, vous pouvez suivre la même approche spécifiée dans Accès sécurisé à Amazon SageMaker Studio avec AWS SSO et une application SAML.
- Firefox doit être installé dans l'instance. Sinon, une fois dans l'instance, nous pouvons installer Firefox.
- Ouvrez Firefox et essayez d'accéder à l'API de Studio avec soit
user-lob-a
oruser-lob-b
comme paramètre de chemin d'API.
Vous obtenez un message non autorisé.
- Ouvrez les outils de développement de Firefox et sur le Réseau , choisissez (clic droit) l'appel d'API précédent, puis choisissez Modifier et renvoyer.
- Ici, nous ajoutons le jeton en tant qu'en-tête d'autorisation dans les outils de développement Firefox et renvoyons la demande à l'API Studio Access Gateway.
Cette fois, nous voyons dans les outils de développement que l'URL est renvoyée avec une redirection 302.
- Bien que la redirection ne fonctionne pas lors de l'utilisation des outils de développement, vous pouvez toujours la choisir pour accéder au domaine LOB SageMaker pour cet utilisateur.
- Répétez l'opération pour l'utilisateur B avec son jeton correspondant et vérifiez qu'il est redirigé vers un autre domaine Studio.
Si vous effectuez ces étapes correctement, vous pouvez accéder aux deux domaines en même temps.
Dans notre application Windows sur site, nous pouvons avoir les deux domaines consommés via le point de terminaison Studio VPC via notre connexion d'appairage VPC.
Explorons d'autres scénarios de test.
Si vous modifiez à nouveau l'API et modifiez le chemin vers le LOB opposé, lors du renvoi, nous obtenons une erreur dans la réponse de l'API : une réponse interdite d'API Gateway.
Essayer de prendre l'URL renvoyée pour le bon utilisateur et de la consommer dans le navigateur de votre ordinateur portable échouera également, car elle ne sera pas consommée via le point de terminaison interne du VPC Studio. Il s'agit de la même erreur que nous avons constatée lors des tests avec API Gateway. Il renvoie une erreur "Jeton d'authentification contenant des autorisations insuffisantes".
Prendre trop de temps pour consommer l'URL présignée entraînera une erreur "Jeton d'authentification non valide ou expiré".
Domaines d'échelle
Chaque fois qu'un nouveau domaine SageMaker est ajouté, vous devez effectuer les étapes de mise en réseau et d'accès suivantes :
- Partagez la passerelle de transit avec le nouveau compte en utilisant Gestionnaire d'accès aux ressources AWS (RAM d'AWS).
- Attachez le VPC à la passerelle de transit dans le compte LOB (ceci est fait dans AWS CloudFormation).
Dans notre scénario, la passerelle de transit a été définie avec une association automatique à la table de routage par défaut et la propagation automatique activée. Dans un cas d'utilisation réel, vous devrez peut-être effectuer trois étapes supplémentaires :
- Dans le compte de services partagés, associez le VPC Studio attaché à la table de routage Transit Gateway respective pour les domaines SageMaker.
- Propager les routes VPC associées à Transit Gateway.
- Enfin, ajoutez l'ID de compte avec le nom LOB à la table DynamoDB des LOB.
Nettoyer
Effectuez les étapes suivantes pour nettoyer vos ressources :
- Supprimez la connexion d'appairage de VPC.
- Supprimez les VPC associés des zones hébergées privées.
- Supprimez le modèle de simulateur sur site du compte de services partagés.
- Supprimez les modèles Studio CloudFormation des comptes SageMaker.
- Supprimez le modèle d'accès CloudFormation du compte de services partagés.
- Supprimez le modèle de mise en réseau CloudFormation du compte de services partagés.
Conclusion
Dans cet article, nous avons expliqué comment configurer l'accès API privé multicompte à Studio. Nous avons expliqué comment se déroulent les flux de mise en réseau et d'application, ainsi que la façon dont vous pouvez facilement faire évoluer cette architecture pour plusieurs comptes et domaines SageMaker. Dirigez-vous vers le GitHub référentiel pour commencer votre voyage. Nous serions ravis d'entendre vos commentaires !
À propos des auteurs
Neelam Koshiya est architecte de solutions d'entreprise chez AWS. Son objectif actuel est d'aider les entreprises clientes dans leur parcours d'adoption du cloud pour des résultats commerciaux stratégiques. Dans ses temps libres, elle aime lire et être à l'extérieur.
Alberto Méndez est consultant DevOps associé en services professionnels chez AWS. Il aide à accélérer les parcours des clients vers le cloud. Pendant son temps libre, il aime faire du sport, en particulier le basket-ball et le padel, passer du temps avec sa famille et ses amis et découvrir la technologie.
Rajesh Ramchander est ingénieur principal en données et ML dans les services professionnels chez AWS. Il aide les clients à migrer les charges de travail Big Data et AL/ML vers AWS.
Bélier Vittal est architecte de solutions d'apprentissage automatique chez AWS. Il a plus de 20 ans d'expérience dans l'architecture et la création d'applications distribuées, hybrides et cloud. Il est passionné par la création de solutions d'IA/ML et de Big Data sécurisées et évolutives pour aider les entreprises clientes dans leur parcours d'adoption et d'optimisation du cloud afin d'améliorer leurs résultats commerciaux. Dans ses temps libres, il aime le tennis et la photographie.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- Platoblockchain. Intelligence métaverse Web3. Connaissance Amplifiée. Accéder ici.
- Frapper l'avenir avec Adryenn Ashley. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/secure-amazon-sagemaker-studio-presigned-urls-part-3-multi-account-private-api-access-to-studio/
- :est
- $UP
- 20 ans
- 7
- 8
- 9
- a
- A Propos
- accélérer
- accès
- accessible
- Compte
- hybrides
- atteindre
- à travers
- actes
- ajoutée
- Supplémentaire
- administration
- adopter
- Adoption
- à opposer à
- AI / ML
- Tous
- permet
- Amazon
- Amazon Cognito
- Amazon Sage Maker
- Amazon SageMakerStudio
- et les
- Une autre
- api
- Accès API
- Application
- applications
- une approche
- approprié
- architecture
- SONT
- AS
- d'aspect
- Associé(e)
- associé
- Association
- assumé
- At
- Auth
- authentifié
- authentifie
- autorisation
- Automatique
- automatiquement
- disponibles
- AWS
- AWS CloudFormation
- Balance
- basé
- Essentiel
- Basketball
- BE
- car
- commencer
- va
- jusqu'à XNUMX fois
- Big
- Big Data
- navigateur
- construire
- Développement
- la performance des entreprises
- entreprises
- by
- Appelez-nous
- Appels
- CAN
- les soins
- maisons
- centralisée
- Change
- Modifications
- en changeant
- charge
- vérifier
- Selectionnez
- le cloud
- adoption du cloud
- combinaison
- Communication
- Communications
- Sociétés
- complet
- conformité
- composants électriques
- Confirmer
- NOUS CONTACTER
- connexion
- cohérent
- Console
- construire
- consultant
- consommer
- consommées
- consommation
- Contenant
- Entreprises
- Correspondant
- Prix
- les économies de coûts
- couvert
- engendrent
- créée
- création
- Lettres de créance
- Courant
- Customiser
- Clients
- données
- science des données
- Réglage par défaut
- démontrer
- démontré
- Département
- déployé
- déploiement
- déploie
- décrit
- un
- détail
- détaillé
- dev
- Développeur
- Développement
- différent
- distribué
- dns
- domaine
- domaines
- pendant
- chacun
- même
- non plus
- activé
- end-to-end
- Endpoint
- ingénieur
- assurer
- Assure
- Entreprise
- entités
- entité
- Environment
- environnements
- erreur
- notamment
- établies
- peut
- exemple
- existe
- expansion
- d'experience
- Expliquer
- expliqué
- explorez
- étendre
- FAIL
- famille
- Déposez votre dernière attestation
- finalement
- Firefox
- flux
- Flux
- Focus
- suivre
- Abonnement
- suit
- numérique
- Pour
- trouvé
- Fondation
- gratuitement ici
- amis
- De
- plein
- fonction
- plus
- porte
- générer
- générateur
- obtenez
- GitHub
- Donner
- aller
- gouvernance
- accordée
- Groupes
- arriver
- arrive
- Vous avez
- front
- têtes
- entendre
- vous aider
- aider
- aide
- détient
- hôte
- organisé
- Comment
- How To
- Cependant
- HTML
- http
- HTTPS
- Hybride
- i
- ID
- Identite
- important
- aspect important
- améliorer
- in
- inclut
- d'information
- Infrastructure
- installer
- Installé
- instance
- Des instructions
- Interfaces
- interne
- introduire
- invoque
- impliqué
- IT
- SES
- chemin
- Voyages
- jpg
- Jwt
- ACTIVITES
- gros
- apprentissage
- Gamme
- lignes
- Liste
- Vit
- logique
- Location
- Style
- love
- click
- machine learning
- Entrée
- a prendre une
- manière
- de nombreuses
- Match
- Mai..
- mécanisme
- message
- émigrer
- ML
- PLUS
- plusieurs
- prénom
- noms
- NAVIGUER
- Besoin
- réseau et
- trafic réseau
- de mise en réseau
- Nouveauté
- nombre
- of
- on
- ONE
- opposé
- à mettre en œuvre pour gérer une entreprise rentable. Ce guide est basé sur trois décennies d'expérience
- orchestration
- Autre
- l'extérieur
- paramètre
- paramètres
- partie
- les pièces
- passionné
- mots de passe
- chemin
- motifs
- Effectuer
- effectue
- autorisations
- photographie
- Platon
- Intelligence des données Platon
- PlatonDonnées
- jouer
- Point
- politique
- pool
- peuplé
- Post
- précédent
- précédemment
- Privé
- processus
- Vidéo
- professionels
- Profil
- Profils
- correct
- proposé
- de voiture.
- fournit
- des fins
- requêtes
- vite.
- RAM
- en cours
- monde réel
- reçoit
- réorienter
- Indépendamment
- relation amoureuse
- Les relations
- dépôt
- représentent
- nécessaire
- demandes
- conditions
- Exigences
- résolu
- ressource
- Resources
- ceux
- réponse
- REST
- restreindre
- résultat
- Retours
- Faites un clic droit
- Rôle
- Itinéraire
- routes
- Règle
- sagemaker
- Sam
- même
- Épargnes
- évolutive
- Escaliers intérieurs
- Balance
- scénario
- scénarios
- Sciences
- sécurisé
- sécurité
- jeton de sécurité
- supérieur
- séparé
- Série
- Sans serveur
- service
- Services
- Session
- set
- commun
- devrait
- montrer
- montré
- Spectacles
- simulateur
- unique
- sur mesure
- Solutions
- quelques
- groupe de neurones
- spécifié
- Dépenses
- Sports
- Commencez
- étapes
- Étapes
- Encore
- Boutique
- Stratégique
- entreprise stratégique
- de Marketing
- STRONG
- structuré
- studio
- Support
- table
- Prenez
- prend
- équipes
- Technologie
- modèle
- modèles
- tester
- Essais
- qui
- Le
- les informations
- leur
- Les
- Ces
- trois
- Avec
- fiable
- à
- jeton
- trop
- les outils
- circulation
- transit
- déclenché
- typiquement
- URL
- utilisé
- cas d'utilisation
- Utilisateur
- utilisateurs
- VALIDER
- via
- marcha
- Façon..
- WELL
- Quoi
- qui
- WHO
- sera
- fenêtres
- comprenant
- dans les
- activités principales
- vos contrats
- années
- Vous n'avez
- Votre
- zéphyrnet
- zones