Atlassian Cloud
Architecture Atlassian Cloud et pratiques opérationnelles
Découvrez-en plus sur l'architecture Atlassian Cloud et nos pratiques opérationnelles
Introduction
Les produits et données cloud d'Atlassian sont hébergés par Amazon Web Services (AWS), le fournisseur cloud leader du secteur. Nos produits fonctionnent sur un environnement PaaS (Platform as a Service) divisé en deux ensembles principaux d'infrastructures que nous appelons « Micros » et « non Micros ». Jira, Confluence, Jira Product Discovery, Statuspage, Guard et Bitbucket s'exécutent sur la plateforme Micros, tandis qu'Opsgenie et Trello s'exécutent sur la plateforme non Micros.
Infrastructure cloud
Architecture d'hébergement Atlassian Cloud
Nous utilisons Amazon Web Services (AWS) comme fournisseur de services cloud et ses data centers hautement disponibles dans de nombreuses régions du monde. Chaque région AWS est un emplacement géographique distinct comprenant plusieurs groupes de data centers isolés et séparés physiquement, appelés zones de disponibilité (ZD).
Nous utilisons les services de calcul, de stockage, de mise en réseau et de données d'AWS pour créer nos produits et les composants de notre plateforme. Nous pouvons ainsi utiliser les capacités de redondance offertes par AWS, telles que les régions et les zones de disponibilité.
Zones de disponibilité
Chaque ZD est conçue pour être isolée des pannes dans d'autres zones et pour fournir une connectivité réseau peu coûteuse et à faible latence avec d'autres ZD de la même région. Cette haute disponibilité multizones constitue la première ligne de défense contre les risques régionaux et environnementaux, et signifie que les services fonctionnant dans des déploiements multi-ZD doivent être capables de résister aux pannes de ZD.
Jira et Confluence utilisent le mode de déploiement multi-ZD pour Amazon Relational Database Service (Amazon RDS). Dans un déploiement multi-ZD, Amazon RDS fournit et maintient une réplication synchrone de secours dans une autre ZD de la même région pour fournir une redondance et une capacité de basculement. Le basculement de ZD est automatisé et prend généralement de 60 à 120 secondes, de sorte que les opérations de la base de données impactée peuvent reprendre aussi rapidement que possible sans intervention administrative. Opsgenie, Statuspage, Trello et Jira Align utilisent des stratégies de déploiement similaires, avec de petites variations dans la synchronisation des réplications et des basculements.
Emplacement des données
Les données Jira et Confluence sont hébergées dans la région la plus proche de celle où se trouve la majorité de vos utilisateurs lors de leur inscription. Les données de Bitbucket se trouvent dans deux zones de disponibilité différentes de la région de l'est des États-Unis.
Cependant, nous comprenons que certains d'entre vous peuvent avoir besoin que leurs données soient hébergées dans un endroit particulier. C'est pourquoi nous proposons des options de résidence des données. Actuellement, la résidence des données est disponible pour Jira, Jira Service Management, Jira Product Discovery et Confluence dans 11 régions, dont les États-Unis, l'UE, le Royaume-Uni, l'Australie, le Canada, l'Allemagne, l'Inde, le Japon, Singapour, la Corée du Sud et la Suisse. Lisez notre documentation pour en savoir plus sur la résidence des données et les données pertinentes sur les produits. En outre, vous pouvez suivre notre feuille de route pour obtenir des mises à jour sur la résidence des données, y compris les extensions à de nouveaux produits, types de données et nouvelles régions.
Sauvegardes de données
Atlassian met en œuvre un programme de sauvegarde complet. Ce dernier inclut nos systèmes internes, dans lesquels nos mesures de sauvegarde sont conçues conformément aux exigences de récupération du système. Concernant nos produits cloud, et plus particulièrement en ce qui vous concerne (vous et vos données applicatives), nous avons également mis en place des mesures de sauvegarde étendues. Nous utilisons la fonctionnalité d'instantané Amazon RDS pour créer des sauvegardes quotidiennes automatisées de chaque instance RDS.
Les instantanés Amazon RDS sont conservés pendant 30 jours avec prise en charge de la reprise à un instant de référence et sont chiffrés avec l'algorithme AES-256. Les données de sauvegarde ne sont pas stockées hors site, mais sont répliquées dans plusieurs data centers au sein d'une région AWS spécifique. Nous effectuons également des tests trimestriels de nos sauvegardes.
Pour Bitbucket, les instantanés de stockage sont conservés pendant 7 jours avec support pour restauration ponctuelle.
Nous n'utilisons pas ces sauvegardes pour annuler les changements destructeurs initiés par le client, comme l'écrasement de champs à l'aide de scripts ou la suppression de tickets, projets ou sites. Pour éviter la perte de données, nous vous recommandons de faire des sauvegardes régulières. Découvrez-en plus sur la création de sauvegardes dans la documentation de support propre à votre produit.
Sécurité des data centers
AWS maintient plusieurs certifications pour la protection de ses data centers. Ces certifications portent sur la sécurité physique et environnementale, la disponibilité des systèmes, l'accès au réseau et à la dorsale IP, le provisionnement des clients et la gestion des problèmes. L'accès aux data centers est limité au personnel autorisé et vérifié par des mesures biométriques de contrôle de l'identité. Les mesures de sécurité physique comprennent des gardes de sécurité sur place, une surveillance vidéo en circuit fermé, des pièges humains et des mesures supplémentaires de protection contre les intrusions.
Architecture de la plateforme cloud
Architecture de services distribuée
Grâce à cette architecture AWS, nous hébergeons un certain nombre de services produit et de plateforme utilisés sur l'ensemble de nos solutions. Ces services incluent les fonctionnalités de la plateforme qui sont partagées et utilisées par plusieurs produits Atlassian (comme Media, Identity et Commerce), des expériences comme notre éditeur, ainsi que des fonctionnalités spécifiques des produits, notamment le service Jira Issue et Confluence Analytics.
FIGURE 1
Les développeurs Atlassian fournissent ces services via Kubernetes ou une Platform as a Service (PaaS) développée en interne, appelée Micros, qui orchestrent tous deux automatiquement le déploiement des services partagés, de l'infrastructure, des magasins de données et de leurs fonctionnalités de gestion, y compris les exigences de contrôle de la sécurité et de la conformité (voir la figure 1 ci-dessus). En général, un produit Atlassian se compose de plusieurs services « conteneurisés » déployés sur AWS à l'aide de Micros ou de Kubernetes. Les produits Atlassian utilisent les fonctionnalités de base de la plateforme (voir la figure 2 ci-dessous) qui vont du routage des demandes aux magasins d'objets binaires, en passant par l'authentification/autorisation, le contenu généré par l'utilisateur (CGU) transactionnel et les magasins de relations entre entités, les data lakes (lacs de données), la journalisation commune, le suivi des demandes, l'observabilité et les services d'analyse. Ces microservices sont conçus à l'aide de stacks techniques approuvées et standardisées au niveau de la plateforme :
FIGURE 2
Architecture multilocataire
En plus de notre infrastructure cloud, nous avons créé et utilisons une architecture de microservices multilocataire avec une plateforme partagée qui prend en charge nos produits. Dans une architecture multilocataire, un seul service dessert plusieurs clients, y compris les bases de données et les instances de calcul nécessaires à l'exécution de nos produits cloud. Chaque partition (essentiellement un conteneur, voir la figure 3 ci-dessous) contient les données de plusieurs locataires, mais les données de chaque locataire sont isolées et inaccessibles aux autres locataires. Il est important de noter que nous ne proposons pas une architecture à locataire unique.
FIGURE 3
Nos microservices sont conçus selon le principe du moindre privilège et de sorte à réduire le périmètre de tout exploit zero-day ainsi que la probabilité de mouvements latéraux au sein de notre environnement cloud. Chaque microservice dispose de son propre stockage de données qui n'est accessible qu'avec le protocole d'authentification pour ce service spécifique, ce qui signifie qu'aucun autre service n'a accès en lecture ou en écriture à cette API.
Nous nous sommes concentrés sur l'isolement des microservices et des données, plutôt que sur la fourniture d'une infrastructure dédiée par locataire, car cela restreint l'accès aux données limitées d'un seul système pour de nombreux clients. Étant donné que la logique a été découplée, et que l'authentification et l'autorisation des données interviennent au niveau de la couche applicative, ce procédé fait office de contrôle de sécurité supplémentaire lorsque des demandes sont envoyées à ces services. Ainsi, si un microservice est compromis, la seule conséquence sera une limitation de l'accès aux données dont un service particulier a besoin.
Provisionnement d'un locataire et cycle de vie
Lorsqu'un nouveau client est provisionné, une série d'événements déclenche l'orchestration des services distribués et le provisionnement des magasins de données. Ces événements peuvent généralement être mappés à l'une des sept étapes du cycle de vie :
1. Les systèmes commerciaux sont immédiatement mis à jour avec les dernières métadonnées et informations de contrôle d'accès pour ce client, puis un système d'orchestration du provisionnement aligne « l'état des ressources provisionnées » avec l'état de la licence par le biais d'une série d'événements liés au locataire et aux produits.
Événements liés au locataire
Ces événements affectent le locataire dans son ensemble et peuvent prendre deux formes :
- Création : un locataire est créé et utilisé pour de tout nouveaux sites
- Destruction : un locataire entier est supprimé
Événements liés aux produits
- Activation : après l'activation de produits sous licence ou d'apps tierces
- Désactivation : après la désactivation de certains produits ou de certaines apps
- Suspension : après la suspension d'un produit existant, désactivant ainsi l'accès à un site donné dont il est propriétaire
- Annulation de suspension : après l'annulation de la suspension d'un produit existant, permettant ainsi l'accès à un site dont il est propriétaire
- Mise à jour de licence : contient des informations concernant le nombre de postes de licence pour un produit donné ainsi que son état (actif/inactif)
2. Création du site client et activation de l'ensemble de produits approprié pour le client. Le concept d'un site est le conteneur de plusieurs produits concédés sous licence à un client spécifique. (p. ex. Confluence et Jira Software pour <nom-site>.atlassian.net).
Figure 4
3. Provisionnement de produits sur le site client dans la région désignée.
Lorsqu'un produit est provisionné, la majeure partie de son contenu est hébergée à proximité de l'endroit où les utilisateurs y accèdent. Pour optimiser les performances des produits, nous ne limitons pas le mouvement des données lorsqu'elles sont hébergées dans le monde entier et nous pouvons déplacer des données entre les régions selon les besoins.
Pour certains de nos produits, nous proposons également la résidence des données. Cette dernière permet aux clients de choisir si les données des produits sont distribuées dans le monde entier ou conservées dans l'une de nos zones géographiques définies.
4. Création et stockage de la configuration et des métadonnées de base du site client et des produits.
5. Création et stockage des données d'identité du site et des produits, comme les utilisateurs, les groupes, les autorisations, et bien plus encore.
6. Provisionnement de bases de données de produits sur un site, p. ex. gamme de produits Jira, Confluence, Compass ou Atlas.
7. Provisionnement des apps sous licence des produits.
Figure 5
La figure 5 ci-dessus montre comment le site d'un client est déployé dans notre architecture distribuée, et pas uniquement dans une base de données ou un magasin unique. Cela inclut plusieurs emplacements physiques et logiques qui stockent des métadonnées, des données de configuration, des données produit et de plateforme, ainsi que d'autres informations de site connexes.
Isolement des locataires
Bien que nos clients partagent une infrastructure commune basée dans le cloud lorsqu'ils utilisent nos produits cloud, nous avons mis en place des mesures pour nous assurer qu'ils sont logiquement isolés afin que les actions d'un client ne puissent compromettre les données ou le service d'autres clients.
L'approche d'Atlassian varie selon les applications. Pour Jira et Confluence Cloud, nous adoptons un concept appelé « Contexte de locataire » afin de parvenir à l'isolement logique de nos clients. Ce concept est implémenté à la fois dans le code applicatif et géré par ce que nous appelons un service de contexte de locataire (Tenant Context Service, TCS). Celui-ci assure que :
- les données de chaque client sont logiquement isolées de celles des autres locataires au repos ;
- toutes les demandes traitées par Jira ou Confluence offrent une vue propre au locataire afin que les autres locataires ne soient pas impactés.
Dans les grandes lignes, le TCS stocke un contexte pour les différents locataires du client. Le contexte de chaque locataire est associé à un ID unique stocké de façon centrale par le TCS et inclut diverses métadonnées associées à ce locataire, comme les bases de données dans lesquelles le locataire se trouve, les licences dont il dispose, les fonctionnalités auxquelles il a accès, et tout un éventail d'autres informations de configuration. Lorsqu'un client accède à Jira ou Confluence Cloud, le TCS utilise l'identifiant du locataire pour rassembler ces métadonnées, qui sont ensuite associées à toutes les opérations effectuées par le locataire dans l'app tout au long de sa session.
Limites Atlassian
Vos données sont également protégées par ce que nous appelons une « limite » : des murs virtuels que nous construisons autour de notre logiciel. Lorsqu'une demande arrive, elle est envoyée à la limite la plus proche. Via une série de validations, elle est ensuite autorisée ou refusée.
- Elle arrive à la limite Atlassian la plus proche de l'utilisateur. La limite vérifie la session et l'identité de l'utilisateur par l'intermédiaire de votre système d'identité.
- La limite détermine où se trouvent les données de vos produits, en fonction des informations du TCS.
- La limite transmet la demande à la région cible, où elle aboutit sur un nœud de calcul.
- Le nœud utilise le système de configuration du locataire pour déterminer des informations, comme l'emplacement de la licence et de la base de données, puis s'adresse à d'autres magasins de données et services (par exemple, la plateforme multimédia qui héberge les images et les pièces jointes) pour récupérer les informations requises afin de répondre à la demande.
- La demande initiale de l'utilisateur avec des informations rassemblées à partir de ses précédents appels à d'autres services.
Contrôles de sécurité
Étant donné que nos produits cloud s'appuient sur une architecture multilocataire, nous pouvons intégrer des contrôles de sécurité supplémentaires dans la logique d'app découplée. Une app monolithique par locataire n'introduirait généralement pas de contrôles d'autorisation supplémentaires ni de limitation de débit, par exemple sur un volume élevé de requêtes ou d'exportations. L'impact d'un seul exploit zero-day est considérablement réduit à mesure que le périmètre des services diminue.
En outre, nous avons intégré des contrôles préventifs supplémentaires à nos produits entièrement hébergés sur notre plateforme Atlassian. Les principaux contrôles préventifs incluent :
- Authentification et autorisation de services
- Service de contexte de locataire (TCS)
- Gestion des clés
- Cryptage de données
Authentification et autorisation de services
Notre plateforme utilise un modèle de moindre privilège pour accéder aux données. Autrement dit, toutes les données sont limitées au seul service chargé de les enregistrer, de les traiter ou de les récupérer. Par exemple, les services multimédias, qui vous permettent de bénéficier d'une expérience de chargement et de téléchargement de fichiers cohérente sur l'ensemble de nos produits cloud, disposent d'un stockage dédié auquel aucun autre service Atlassian ne peut accéder. Tout service nécessitant un accès au contenu multimédia doit interagir avec l'API des services multimédias. Par conséquent, une authentification et une autorisation fortes au niveau de la couche de service imposent également une forte séparation des tâches et un accès aux données conforme au principe du moindre privilège.
Nous utilisons des jetons web JSON (JWT) pour garantir l'autorité de signature en dehors de l'app, afin que nos systèmes d'identité et le contexte du locataire soient la source de référence. Les jetons ne peuvent être utilisés à d'autres fins que celles pour lesquelles ils sont autorisés. Lorsque vous ou un membre de votre équipe appelez un microservice ou une partition, les jetons sont transmis à votre système d'identité et validés par rapport à celui-ci. Ce processus garantit que le jeton est à jour et signé avant tout partage des données appropriées. En cas de compromission d'un service, son périmètre est limité grâce à ce processus, combiné à l'autorisation et à l'authentification requises pour accéder à ces microservices.
Nous savons toutefois que les systèmes d'identité peuvent parfois être compromis. Pour atténuer ce risque, nous utilisons deux mécanismes. Tout d'abord, le TCS et les proxys d'identité sont hautement répliqués. Nous avons un TCS supplémentaire pour presque tous les microservices et nous utilisons des proxys supplémentaires qui émanent de l'autorité d'identité, de sorte que des milliers de ces services sont en cours d'exécution à tout moment. En cas de comportement anormal dans un ou plusieurs d'entre eux, nous pouvons intervenir rapidement et résoudre le problème.
De plus, nous n'attendons pas que quelqu'un découvre une vulnérabilité dans nos produits ou notre plateforme. Nous identifions activement ces scénarios afin qu'ils vous impactent au minimum, et nous exécutons un certain nombre de programmes de sécurité pour identifier et détecter les menaces de sécurité et pour y répondre.
Service de contexte de locataire (TCS)
Nous nous assurons que les demandes adressées à tous les microservices contiennent des métadonnées concernant le client (ou le locataire) qui demande l'accès. C'est ce que nous appelons le service de contexte de locataire (TCS). Il est directement renseigné à partir de nos systèmes de provisionnement. Lorsqu'une demande est initiée, le contexte est lu et internalisé dans le code de service en cours d'exécution, qui est utilisé pour autoriser l'utilisateur. Tous les accès au service (et donc aux données) dans Jira et Confluence nécessitent ce contexte de locataire, sinon la demande sera rejetée.
L'authentification et l'autorisation de services sont appliquées via le protocole Atlassian Service Authentication Protocol (ASAP). Une liste verte explicite détermine quels services peuvent communiquer, et des informations d'autorisation spécifient les commandes ainsi que les chemins disponibles. Cela limite tout mouvement latéral potentiel d'un service compromis.
L'authentification et l'autorisation de services, ainsi que la sortie, sont contrôlées par un ensemble de proxys dédiés. Ainsi, les vulnérabilités du code de l'app n'ont aucun impact sur ces contrôles. L'exécution de code arbitraire (RCE) nécessiterait de compromettre l'hôte sous-jacent et de contourner les limites du conteneur Docker, et pas seulement de pouvoir modifier la logique de l'app. Notre détection des intrusions au niveau de l'hôte signale plutôt les incohérences.
Ces proxys limitent le comportement de sortie en fonction du comportement prévu du service. Les services qui n'ont pas besoin d'émettre des webhooks ou de communiquer avec d'autres microservices ne sont pas autorisés à le faire.
Cryptage de données
Customer data in Atlassian cloud products is encrypted during transmission utilizing TLS 1.2 or higher, incorporating perfect forward secrecy (PFS) to safeguard against unauthorized information disclosure and data modification. We adhere to NIST-recommended TLS 1.2+ protocols, which enforce the use of strong ciphers and key lengths as supported by the browser.
Customer data, including attachments, stored on the cloud services such as Jira Software Cloud, Jira Service Management Cloud, Jira, Bitbucket Cloud, Confluence Cloud, Statuspage, Opsgenie, and Trello are protected using industry-standard AES-256 encryption at rest.
Personally Identifiable Information (PII) transmission is protected through encryption and robust data access controls, which are designed to ensure that data is securely transmitted to its intended destination. Atlassian's Cryptography and Encryption Policy outlines principles for implementing encryption and cryptography to mitigate risks related to storing and transmitting PII. The encryption algorithms for protecting PII are aligned with the classification level of the PII, as specified by Atlassian's internal Data Security & Information Lifecycle Management policies. This ensures that sensitive data is adequately secured based on its classification. To learn more about how we collect, share, and use customer data, refer to our privacy page.
Pour vous tenir au courant des fonctionnalités supplémentaires de chiffrement des données, consultez notre feuille de route Cloud.
Gestion des clés cryptographiques
Atlassian Cloud utilise AWS Key Management Service (KMS) pour gérer les clés cryptographiques utilisées pour le chiffrement et le déchiffrement des données. De par leur conception, ces clés KMS sont soutenues par des supports clés sécurisés dans des modules de sécurité matériels (HSM) validés par le programme de validation des modules cryptographiques du NIST. L'approche sécurisée dès la conception d'AWS KMS avec des HSM validés par la norme FIPS permet une protection approfondie en matière de gestion des clés. Cela empêche les employés d'AWS et d'Atlassian de récupérer des informations clés en texte brut dans KMS ou les HSM.
Le chiffrement des enveloppes est appliqué aux données en transit et aux données au repos. Les clés de données sont créées pour chaque service, et seuls les services autorisés sont autorisés à chiffrer ou à déchiffrer en mode refus implicite. Les clés de données sont ensuite enveloppées (chiffrées par les ressources KMS CMK correspondantes) à des fins de protection.
Le chiffrement au niveau du volume ou du disque est mis en œuvre selon les besoins, en particulier pour les ressources, telles que les bases de données et les magasins d'objets qui sont gérés directement par le biais de services gérés par AWS. Les clés cryptographiques utilisées pour ce chiffrement sont provisionnées et protégées par les mêmes sources HSM.
Les clés KMS et les clés de données font l'objet d'une rotation périodique afin de minimiser les surfaces d'attaque potentielles. Lorsqu'une clé KMS passe à une nouvelle version, les clés de données existantes qui ont été chiffrées à l'aide des anciennes versions des clés KMS ne peuvent être déchiffrées qu'avec les anciennes clés KMS. Parallèlement, toutes les nouvelles clés de données créées après la rotation des clés KMS seront chiffrées et déchiffrées à l'aide de la nouvelle version active de la clé KMS. La gestion de la rotation des clés de données est régie par des limites d'utilisation, qui peuvent être spécifiées en termes d'opérations maximales ou de durée de vie maximale. Par exemple, une clé de données peut être changée après avoir atteint cinq millions d'opérations ou au bout de 24 heures, selon la première éventualité. Des KMS multirégionaux et des caches de clés sécurisés sont mis en œuvre pour atteindre la haute disponibilité et le niveau de performance souhaité.
Pour plus de détails, lisez cet article de blog.
Bring-your-own key (BYOK)
Pour mieux contrôler vos données produit, Atlassian Cloud prend en charge une fonctionnalité de chiffrement BYOK (Bring Your Own Key) pour un portefeuille de données produit sélectionné et en pleine croissance. Pour en savoir plus sur le chiffrement BYOK, cliquez ici.
Le chiffrement BYOK d'Atlassian n'entraîne pas de surcharge de performance et n'a pas d'impact négatif sur l'expérience utilisateur grâce au mécanisme de cache efficace et sécurisé utilisé par les systèmes d'Atlassian.