La sécurité du cloud chez AWS est la priorité absolue. Amazon SageMakerStudio . divers mécanismes pour protéger vos données et votre code en utilisant l'intégration avec les services de sécurité AWS comme Gestion des identités et des accès AWS (JE SUIS), Service de gestion des clés AWS (AWS KMS), ou isolation du réseau avec Cloud privé virtuel Amazon (Amazon VPC).
Les clients des secteurs hautement réglementés, comme les services financiers, peuvent configurer Studio dans VPC uniquement mode pour activer l'isolation du réseau et désactiver l'accès à Internet à partir des ordinateurs portables Studio. Vous pouvez utiliser l'intégration IAM avec Studio pour contrôler quels utilisateurs ont accès à des ressources telles que les blocs-notes Studio, l'IDE Studio ou Amazon Sage Maker emplois de formation.
Un cas d'utilisation populaire consiste à restreindre l'accès à l'IDE Studio uniquement aux utilisateurs à l'intérieur d'une plage CIDR réseau spécifiée ou d'un VPC désigné. Vous pouvez y parvenir en mettant en œuvre Politiques SageMaker basées sur l'identité IAM et attacher ces stratégies aux utilisateurs ou groupes IAM qui nécessitent ces autorisations. Cependant, le domaine SageMaker doit être configuré avec Mode d'authentification IAM, car les stratégies IAM basées sur l'identité ne sont pas prises en charge dans Authentification unique AWS (authentification unique) Mode d'authentification.
De nombreux clients utilisent AWS SSO pour permettre un contrôle centralisé de l'identité de la main-d'œuvre et fournir une expérience de connexion utilisateur cohérente. Cet article montre comment implémenter ce cas d'utilisation tout en conservant les capacités d'AWS SSO pour accéder à Studio.
Vue d'ensemble de la solution
Lorsque vous configurez un domaine SageMaker en mode VPC uniquement et spécifiez les sous-réseaux et les groupes de sécurité, SageMaker crée interfaces réseau élastiques (ENI) associés à vos groupes de sécurité dans les sous-réseaux spécifiés. Les ENI permettent à vos conteneurs de formation de se connecter aux ressources de votre VPC.
Dans ce mode, l'accès direct à Internet à partir des ordinateurs portables est complètement désactivé et tout le trafic est acheminé via une ENI dans votre VPC privé. Cela inclut également le trafic des widgets et des interfaces de l'interface utilisateur de Studio, tels que la gestion des expériences, le pilote automatique et le moniteur de modèle, vers leurs API SageMaker backend respectives. AWS recommande d'utiliser le mode VPC uniquement pour exercer un contrôle précis sur l'accès réseau de Studio.
Le premier défi est que même si Studio est déployé sans connexion Internet, Studio IDE est toujours accessible de n'importe où, en supposant que l'accès au Console de gestion AWS et Studio est accordé à un mandataire IAM. Cette situation n'est pas acceptable si vous souhaitez isoler complètement Studio d'un réseau public et contenir toutes les communications au sein d'un VPC privé étroitement contrôlé.
Pour relever ce défi et désactiver tout accès à Studio IDE, sauf à partir d'un VPC désigné ou d'une plage CIDR, vous pouvez utiliser le API CreatePresignedDomainUrl SageMaker. Le rôle ou l'utilisateur IAM utilisé pour appeler cette API définit les autorisations d'accès à Studio. Vous pouvez désormais utiliser des stratégies IAM basées sur l'identité pour implémenter la configuration d'accès souhaitée. Par exemple, pour autoriser l'accès uniquement à partir d'un VPC désigné, ajoutez la condition suivante à la stratégie IAM, associée à un mandataire IAM, qui est utilisée pour générer une URL de domaine présignée :
Pour activer l'accès uniquement à partir d'un ou plusieurs points de terminaison de VPC désignés, spécifiez la condition suivante :
Utilisez la condition suivante pour restreindre l'accès à partir d'une plage CIDR désignée :
Le deuxième défi est que le contrôle d'accès basé sur IAM ne fonctionne que lorsque le domaine SageMaker est configuré en mode d'authentification IAM ; vous ne pouvez pas l'utiliser lorsque le domaine SageMaker est déployé en mode AWS SSO. La section suivante montre comment relever ces défis et mettre en œuvre un contrôle d'accès basé sur IAM avec l'accès AWS SSO à Studio.
Aperçu de l'architecture
Studio est publié en tant qu'application SAML, qui est attribuée à un profil utilisateur SageMaker Studio spécifique. Les utilisateurs peuvent facilement accéder à Studio directement à partir du portail AWS SSO, comme illustré dans la capture d'écran suivante.
La solution s'intègre à un application SAML 2.0 personnalisée comme mécanisme pour déclencher l'authentification de l'utilisateur pour Studio. Il nécessite que l'application SAML personnalisée soit configurée avec le Passerelle d'API Amazon l'URL du point de terminaison en tant que service consommateur d'assertion (ACS) et nécessite des attributs de mappage contenant l'ID utilisateur AWS SSO ainsi que l'ID de domaine SageMaker.
Le point de terminaison API Gateway appelle un AWS Lambda fonction qui analyse la réponse SAML pour extraire l'ID de domaine et l'ID utilisateur et les utiliser pour générer une URL pré-signée Studio. La fonction Lambda effectue enfin une redirection via une réponse HTTP 302 pour connecter l'utilisateur dans Studio.
Une stratégie IAM contrôle l'environnement réseau à partir duquel les utilisateurs de Studio sont autorisés à se connecter, ce qui inclut les conditions restrictives décrites dans la section précédente. Cette stratégie IAM est attachée à la fonction Lambda. La stratégie IAM contient une autorisation d'appeler le sagemaker:CreatePresignedDomainURL
API pour un profil utilisateur spécifique uniquement :
Le diagramme suivant montre l'architecture de la solution.
La solution déploie un domaine SageMaker dans votre VPC privé et Points de terminaison VPC pour accéder à Studio, à l'environnement d'exécution SageMaker et à l'API SageMaker via une connexion privée sans avoir besoin d'une passerelle Internet. Les points de terminaison de VPC sont configurés avec le DNS privé activé (PrivateDnsEnabled=True
) pour associer un zone hébergée privée avec votre VPC. Cela permet à Studio d'accéder à l'API SageMaker en utilisant le nom DNS public par défaut api.sagemaker.<Region>.amazonaws.com
résolu à l'adresse IP privée du point de terminaison plutôt qu'à l'aide de l'URL du point de terminaison du VPC.
Vous devez ajouter des points de terminaison VPC à votre VPC si vous souhaitez accéder à d'autres services AWS tels que Service de stockage simple Amazon (Amazon S3), Registre des conteneurs élastiques Amazon (AmazonECR), Service de jeton de sécurité AWS (AWS SST), AWS CloudFormationou Code AWSCommit.
Vous pouvez contrôler entièrement les autorisations utilisées pour générer l'URL présignée et tout autre appel d'API avec des stratégies IAM attachées au rôle d'exécution de la fonction Lambda ou contrôler l'accès à tout service AWS utilisé via Stratégies de point de terminaison VPC. Pour obtenir des exemples d'utilisation de stratégies IAM pour contrôler l'accès à Studio et à l'API SageMaker, consultez Contrôler l'accès à l'API SageMaker à l'aide de politiques basées sur l'identité.
Bien que la solution nécessite que le domaine Studio soit déployé en mode IAM, elle permet à AWS SSO d'être utilisé comme mécanisme permettant aux utilisateurs finaux de se connecter à Studio.
Les sous-sections suivantes contiennent des descriptions détaillées des principaux composants de la solution.
Passerelle API
Le point de terminaison API Gateway agit comme cible pour l'URL ACS de l'application configurée dans l'application SAML 2.0 personnalisée. Le point de terminaison est privé et possède une ressource appelée /saml
et une méthode POST avec demande d'intégration configurée en tant que proxy Lambda. La solution utilise un point de terminaison VPC avec un com.amazonaws.<region>.execute-api
Nom DNS pour appeler ce point de terminaison d'API depuis le VPC.
AWSSSO
Une application SAML 2.0 personnalisée est configurée avec l'URL du point de terminaison API Gateway https:/{ restapi-id}.execute-api.amazonaws.com/saml
comme URL ACS d'application et utilise des mappages d'attributs avec les exigences suivantes :
- Identifiant utilisateur :
- Attribut utilisateur dans l'application - Nom d'utilisateur
- Mappe l'attribut utilisateur dans AWS SSO -
${user:AD_GUID}
- Identifiant d'ID de domaine SageMaker :
- Attribut utilisateur dans l'application -
domain-id
- Mappe l'attribut utilisateur dans AWS SSO – ID de domaine pour l'instance Studio
- Attribut utilisateur dans l'application -
L'application implémente le contrôle d'accès pour un utilisateur AWS SSO en provisionnant un profil utilisateur Studio avec le nom égal à l'ID utilisateur AWS SSO.
Fonction Lambda
La solution configure une fonction Lambda en tant que point d'appel pour la passerelle API /saml
Ressource. La fonction analyse le SAMLResponse
envoyé par AWS SSO, extrait le domain-id
ainsi que le nom d'utilisateur, et appelle le createPresignedDomainUrl
API SageMaker pour récupérer l'URL et le jeton Studio et rediriger l'utilisateur pour qu'il se connecte à l'aide d'une réponse HTTP 302. La fonction Lambda a une stratégie IAM spécifique attachée à son rôle d'exécution qui permet au sagemaker:createPresignedDomainUrl
action uniquement lorsqu'elle est demandée à partir d'une plage CIDR réseau spécifique à l'aide de VpcSourceIp
état.
La fonction Lambda n'a aucune logique pour valider la réponse SAML, par exemple pour vérifier une signature. Cependant, étant donné que le point de terminaison API Gateway servant d'ACS est privé ou interne uniquement, il n'est pas obligatoire pour cet environnement de preuve de concept.
Déployez la solution
Les GitHub référentiel fournit le code source complet pour la solution de bout en bout.
Pour déployer la solution, vous devez disposer d'autorisations d'administrateur (ou d'utilisateur privilégié) pour un compte AWS et installer le Interface de ligne de commande AWS (AWS CLI) et CLI AWS SAM et minimum Python 3.8.
La solution prend en charge le déploiement dans trois régions AWS : eu-west-1
, eu-central-1
et us-east-1
. Assurez-vous de sélectionner l'une de ces régions pour le déploiement.
Pour commencer à tester la solution, vous devez effectuer les étapes de déploiement suivantes à partir du Fichier README GitHub:
- Configurez AWS SSO si vous ne l'avez pas configuré.
- Déployez la solution à l'aide de l'application SAM.
- Créez une nouvelle application SAML 2.0 personnalisée.
Après avoir terminé les étapes de déploiement, vous pouvez procéder au test de la solution.
Testez la solution
La solution simule deux cas d'utilisation pour démontrer l'utilisation des stratégies basées sur l'identité AWS SSO et SageMaker :
- Cas d'utilisation positif – Un utilisateur accède à Studio à partir d'une plage CIDR désignée via un point de terminaison VPC
- Cas d'utilisation négatif – Un utilisateur accède à Studio à partir d'une adresse IP publique
Pour tester ces cas d'utilisation, la solution a créé trois Cloud de calcul élastique Amazon (Amazon EC2) instances :
- Hôte privé – Une instance EC2 Windows dans un sous-réseau privé pouvant accéder à Studio (votre environnement sécurisé sur site)
- Hôte du bastion – Une instance EC2 Linux dans le sous-réseau public utilisée pour établir un tunnel SSH dans l'hôte privé sur le réseau privé
- Hôte public – Une instance EC2 Windows dans un sous-réseau public pour démontrer que l'utilisateur ne peut pas accéder à Studio à partir d'une adresse IP non autorisée
Accès à Test Studio depuis un réseau autorisé
Suivez ces étapes pour effectuer le test :
- Pour accéder à l'instance EC2 Windows sur le réseau privé, exécutez la commande fournie comme valeur de la clé de sortie SAM
TunnelCommand
. Assurez-vous que la clé privée de la paire de clés spécifiée dans le paramètre se trouve dans le répertoire à partir duquel la commande de tunnel SSH est exécutée. La commande crée un tunnel SSH depuis l'ordinateur local surlocalhost:3389
à l'instance EC2 Windows sur le réseau privé. Voir l'exemple de code suivant : - Sur votre ordinateur de bureau ou votre ordinateur portable local, ouvrez une nouvelle connexion RDP (par exemple à l'aide de Microsoft Remote Desktop) à l'aide de
localhost
comme hôte distant cible. Cette connexion est tunnellisée via l'hôte bastion vers l'instance privée EC2 Windows. Utiliser le nom d'utilisateurAdministrator
et le mot de passe de la sortie de la pileSageMakerWindowsPassword
. - Ouvrez le navigateur Web Firefox à partir du poste de travail distant.
- Naviguez et connectez-vous au portail AWS SSO à l'aide des informations d'identification associées au nom d'utilisateur que vous avez spécifié comme
ssoUserName
paramètre. - Choisissez le Démo sécurisée SageMaker Application AWS SSO à partir du portail AWS SSO.
Vous êtes redirigé vers l'IDE Studio dans une nouvelle fenêtre de navigateur.
Tester l'accès au Studio à partir d'un réseau non autorisé
Suivez maintenant ces étapes pour simuler l'accès à partir d'un réseau non autorisé :
- Ouvrez une nouvelle connexion RDP sur l'adresse IP fournie dans le
SageMakerWindowsPublicHost
Sortie SAML. - Ouvrez le navigateur Web Firefox à partir du poste de travail distant.
- Naviguez et connectez-vous au portail AWS SSO à l'aide des informations d'identification associées au nom d'utilisateur spécifié comme
ssoUserName
paramètre. - Choisissez le Démo sécurisée SageMaker Application AWS SSO à partir du portail AWS SSO.
Cette fois, vous recevez un message d'accès non autorisé.
Nettoyer
Pour éviter des frais, vous devez supprimer toutes les ressources provisionnées par la solution et créées manuellement de votre compte AWS. Suivez les instructions de la solution Fichier README.
Conclusion
Nous avons démontré qu'en introduisant une couche d'authentification middleware entre l'utilisateur final et Studio, nous pouvons contrôler l'environnement à partir duquel l'utilisateur est autorisé à accéder à Studio et bloquer explicitement tout autre environnement non autorisé.
Pour renforcer davantage la sécurité, vous pouvez ajouter une stratégie IAM à un rôle d'utilisateur pour empêcher l'accès à Studio depuis la console. Si tu utilises Organisations AWS, vous pouvez implémenter ce qui suit politique de contrôle des services pour les unités organisationnelles ou les comptes qui ont besoin d'accéder à Studio :
Bien que la solution décrite dans cet article utilise API Gateway et Lambda, vous pouvez explorer d'autres moyens, comme une instance EC2 avec un rôle d'instance en utilisant le même flux de travail de validation des autorisations que celui décrit ou même un système indépendant pour gérer l'authentification et l'autorisation des utilisateurs et générer une URL pré-signée Studio.
Lectures complémentaires
La sécurisation de l'accès à Studio est un sujet de recherche actif, et il existe d'autres publications pertinentes sur des approches similaires. Reportez-vous aux publications suivantes sur le blog AWS Machine Learning pour en savoir plus sur les autres services et architectures que vous pouvez utiliser :
À propos des auteurs
Jérôme Bachelet est architecte de solutions chez Amazon Web Services. Il s'efforce d'aider les clients à tirer le meilleur parti d'AWS pour atteindre leurs objectifs commerciaux. Jérôme a plus de 10 ans d'expérience dans les solutions de protection et de sécurité des données. En plus d'être dans le cloud, Jérôme aime voyager et passer du bon temps avec sa femme et ses 2 filles dans la région de Genève, en Suisse.
Evgueni Ilyin est un architecte de solutions chez AWS. Il a plus de 20 ans d'expérience à tous les niveaux de développement de logiciels et d'architecture de solutions et a utilisé des langages de programmation allant de COBOL et Assembler à .NET, Java et Python. Il développe et code des solutions cloud natives en mettant l'accent sur le big data, l'analyse et l'ingénierie des données.
- '
- "
- 100
- 7
- 9
- Qui sommes-nous
- accès
- Compte
- Action
- infection
- propos
- Tous
- Amazon
- Amazon EC2
- Amazon Sage Maker
- Amazon Web Services
- analytique
- api
- Apis
- Application
- architecture
- Réservé
- Authentification
- autorisation
- pilote automatique
- AWS
- va
- Big Data
- blog
- navigateur
- la performance des entreprises
- Appelez-nous
- cas
- challenge
- globaux
- des charges
- le cloud
- nuage natif
- code
- Communication
- calcul
- configuration
- connexion
- Connectivité
- Console
- consommateur
- Contenant
- Conteneurs
- Lettres de créance
- Clients
- données
- protection des données
- la sécurité des données
- Développement
- dns
- Ne fait pas
- effet
- Endpoint
- ENGINEERING
- Environment
- exemple
- exécution
- Exercises
- Découvrez
- expérience
- Extraits
- finalement
- la traduction de documents financiers
- services financiers
- Firefox
- Prénom
- Focus
- suivre
- plein
- fonction
- générer
- gif
- Comment
- How To
- HTTPS
- IAM
- Active
- Mettre en oeuvre
- la mise en œuvre
- secteurs
- l'intégration
- Internet
- IP
- IP dédiée
- seul
- IT
- Java
- Emplois
- en gardant
- ACTIVITES
- Langues
- APPRENTISSAGE
- apprentissage
- Gamme
- linux
- locales
- machine learning
- gestion
- Microsoft
- modèle
- net
- réseau et
- L'accès au réseau
- ordinateurs portables
- Offres Speciales
- ouvert
- Autre
- Mot de Passe
- politiques
- politique
- Populaire
- Portail
- Poteaux
- power
- Directeur
- Privé
- Clé privée
- Profil
- Programmation
- langages de programmation
- preuve
- preuve de concept
- protéger
- protection
- fournir
- fournit
- procuration
- public
- Python
- qualité
- gamme
- réorienter
- Exigences
- un article
- ressource
- Ressources
- réponse
- Courir
- sagemaker
- sécurité
- Services
- service
- set
- similaires
- étapes
- Logiciels
- développement de logiciels
- Solutions
- Commencer
- Déclaration
- storage
- Appareils
- Les soutiens
- Suisse
- combustion propre
- Target
- tester
- Essais
- Avec
- fiable
- jeton
- circulation
- Formation
- ui
- utilisateurs
- Plus-value
- Salle de conférence virtuelle
- web
- navigateur web
- services Web
- fenêtres
- dans les
- sans
- workflow
- Workforce
- vos contrats
- années