Code Engine et sécurité
L'Architecture IBM Cloud® Code Engine est construite avec pour but premier la sécurité. Les composants Code Engine sont gérés et détenus par IBM.
Les clients et leurs charges de travail sont isolés les uns des autres par le biais de projets basés sur des espaces de nom Kubernetes. des contrôles d'accès basés sur les rôles sont effectués au niveau de la ressource pour permettre aux utilisateurs
autorisés uniquement d'effectuer certaines opérations sur les ressources de projet. L'accès utilisateur est contrôlé par Cloud Identity and Access Management (IAM). Les applications déployées sont accessibles via HTTPS, et Code
Engine crée et gère automatiquement pour vous les certificats TLS sous-jacents. Code Engine assure une protection immédiate contre les attaques de type « DDoS » pour votre application. Le service « DDoS protection » de Code Engine est fourni par Cloud Internet Services (CIS) sans frais supplémentaires pour vous.
Les travaux Code Engine ne sont, par définition, par accessible en externe. Les travaux peuvent toujours émettre des demandes externes, de sorte qu'ils peuvent appeler des applications Code Engine en interne. Pour découvrir un exemple de tâche qui appelle une application en interne, consultez le référentiel « Samples for Code Engine »(GitHub ) sur GitHub.
Vous pouvez utiliser les fonctions de sécurité suivantes pour renforcer votre sécurité.
| Fonction de sécurité | Description |
|---|---|
| Autoriser l'accès avec IAM | Accordez l'accès à d'autres utilisateurs pour Code Engine à l'aide de Cloud Identity and Access Management (IAM). IBM Cloud IAM fournit une authentification sécurisée avec la plateforme IBM Cloud, Code Engineet toutes les ressources de votre compte. Définir des rôles utilisateur et des droits d'accès appropriés est essentiel pour limiter l'accès à vos ressources. Voir Gestion de l'accès utilisateur. |
| Désactiver les noeuds finaux externes | Déployez votre application avec un nœud final externe désactivé qui n'est pas exposé au trafic externe à l'aide de l'option --visibility=private ou visibility=project. Voir Options de visibilité pour une application Code Engine. |
| Stocker des images dans des registres d'images privés | Configurez un registre d'images privé, tel celui fourni par IBM Cloud Container Registry, afin de contrôler l'accès au registre et aux images qui peuvent être déployées dans Code Engine. Numérisez vos images automatiquement avec le Vulnerability Advisor de IBM Cloud Container Registry. Vous pouvez également ajouter un accès à votre propre registre privé personnalisé. Voir Accès aux registres de conteneurs. |
| Générer du code à partir d'un référentiel privé | Stockez votre code source dans un référentiel privé puis générer sur IBM Cloud Container Registry. Voir Accès aux référentiels de code privés. |
| Utiliser des secrets pour stocker des informations sensibles | Vous pouvez stocker des informations, telles que des mots de passe et des clés SSH dans un secret. Pour plus d'informations, voir Utilisation de secrets. |
| Ajouter des fonctions d'authentification et d'autorisation | Si vous exposez votre application ou votre fonction dans Code Engine sur une API ou un site Web public, vous souhaiterez peut-être restreindre l'accès à certains utilisateurs ou emplacements (plages d'adresses IP). Alors que Code Engine fournit des capacités de restriction d'accès pour les API que vous pouvez utiliser pour gérer les projets Code Engine et ses entités, il incombe au propriétaire de la source de code d'ajouter des capacités d'authentification et d'autorisation appropriées pour protéger le code qui s'exécute lorsque les noeuds finaux sont accessibles. Par exemple, vous pouvez utiliser IBM Cloud App ID pour ajouter des fonctions d'authentification et d'autorisation pour votre code. |
| Renouveler régulièrement les certificats d' TLS | Si vous utilisez des mappages de domaine personnalisés pour rendre accessibles vos applications ou vos fonctions, vous devez vous assurer que vos certificats TLS ont une date d'expiration; par exemple, 90 jours. Vous devez effectuer une rotation périodique de votre certificat avec un certificat mis à jour (qui possède sa propre date d'expiration). Idéalement, utilisez l'automatisation pour effectuer la rotation des certificats. Par exemple, vous pouvez utiliser une tâche « Code Engine » déclenchée par un abonnement cron pour effectuer la rotation du certificat. Si vous stockez des secrets dans IBM Cloud Secrets Manager, pensez à utiliser IBM Cloud Event Notifications afin que votre projet Code Engine puisse prendre en charge les rotations de certificats. Vous pouvez trouver un exemple d'application utilisant les notifications d'événements en consultant notre référentiel d'exemples « Code Engine » sur GitHub. |
Versions d' TLS s et suites de chiffrement prises en charge
L'API et les points de terminaison d'application de l' Code Engine prennent en charge le protocole TLS ( TLS ), le protocole SSL ( 1.2 ) (ou version supérieure) ainsi que les suites de chiffrement suivantes.
TLS ensembles de chiffrement
ECDHE-ECDSA-AES128-GCM-SHA256ECDHE-ECDSA-AES256-GCM-SHA384ECDHE-RSA-AES128-GCM-SHA256ECDHE-RSA-AES256-GCM-SHA384ECDHE-ECDSA-CHACHA20-POLY1305ECDHE-RSA-CHACHA20-POLY1305
Protection contre les attaques DDoS
Code Engine assure une protection immédiate contre les attaques de type « DDoS » pour votre application. La protection « DDoS » de Code Engine est fournie par Cloud Internet Services (CIS) sans frais supplémentaires pour vous.
DDoS La protection couvre les attaques visant les protocoles des couches 3 et 4 du modèle OSI ( TCP/IP ), mais pas celles visant la couche 7 ( HTTP ).
Pour traiter les attaques de couche 7, vous pouvez effectuer les étapes suivantes pour que votre trafic s'exécute via une route sécurisée à l'aide de votre domaine personnalisé et ne soit plus disponible sur l'Internet public via le domaine fourni par Code Engine.
- Obtenez votre domaine personnalisé.
- Dans Code Engine, créez un mappage de domaine personnalisé pour votre application.
- Configurez une instance de Cloud Internet Services (CIS) pour gérer votre domaine personnalisé.
- Ajoutez le domaine personnalisé à l'instance CIS.
- Configurez un équilibreur de charge global dans CIS.
- Activez le mode proxy « HTTP » pour l'équilibreur de charge dans CIS. Cela active la protection « DDoS » au niveau de la couche 7 ainsi que d'autres fonctionnalités de sécurité d' CIS.
- Dans Code Engine, désactivez les mappages de domaine fournis par le système public de votre application. Accédez à votre application, à partir de l'onglet Mappages de domaines de votre application, sélectionnez Aucun mappage de domaine de système externe.
- Cliquez sur Créer pour sauvegarder la révision d'application.
Pour plus d'informations sur DDoS dans CIS, voir Traitement des attaques par déni de service distribué dans CIS. Pour plus d'informations sur les attaques de couche 7, voir Atténuation des attaques de couche 7 dans CIS.