Arbutus object storage/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
No edit summary
No edit summary
 
(82 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages />
<languages />


= Introduction =
== Introduction ==


<div class="mw-translate-fuzzy">
Le stockage objet est une installation de stockage plus simple qu'un système de fichiers hiérarchique normal, mais qui permet d'éviter certains goulots d'étranglement de la performance. Les objets peuvent être créés, remplacés ou supprimés, mais ne peuvent pas être modifiés sur place, comme c'est le cas avec le stockage traditionnel. Ce type de stockage est devenu très populaire en raison de sa capacité de gérer plusieurs fichiers et des fichiers de grande taille, ainsi que l'existence de nombreux outils compatibles.
Le stockage d'objets est une installation de stockage plus simple qu'un système de fichiers hiérarchique normal, mais qui permet d'éviter certains goulots d'étranglement de performance.
</div>


<div class="mw-translate-fuzzy">
Un objet est un fichier dans un espace de nommage (<i>namespace</i>) plat&nbsp;: un objet peut être créé ou téléchargé dans son ensemble, mais vous ne pouvez pas modifier les octets qu’il contient. Un objet utilise la nomenclature bucket:tag sans qu’il soit imbriqué davantage. Puisque les opérations sur les buckets concernent l’entièreté d’un fichier, le fournisseur peut utiliser une représentation interne plus simple. L’espace de nommage plat permet au fournisseur d’éviter les goulots d’étranglement des métadonnées; on peut dire que c’est une sorte de stockage de clés et de valeurs.
Un objet est un fichier dans un espace de nommage (''namespace'') plat&nbsp;: un objet peut être créé ou téléchargé dans son ensemble, mais vous ne pouvez pas modifier les octets qu’il contient. Un objet est nommé selon la nomenclature bucket:tag sans qu’il soit imbriqué davantage. Puisque les opérations sur les buckets concernent l’entièreté d’un fichier, le fournisseur peut utiliser une représentation interne plus simple. L’espace de nommage plat permet au fournisseur d’éviter les goulots d’étranglement des métadonnées; on peut dire que c’est une sorte de stockage de clés et de valeurs.
</div>


<div class="mw-translate-fuzzy">
La meilleure façon d’utiliser le stockage objet est de stocker et d’exporter des éléments qui ne sont pas nommés dans une structure hiérarchique; auxquels on accède principalement de manière totale et en lecture seule; et pour lesquels les règles d’accès et de contrôle sont simples. Nous recommandons son utilisation avec des plateformes ou des logiciels qui sont conçus pour travailler avec des données qui <i>vivent</i> dans un espace de stockage objet.
La meilleure façon d’utiliser le stockage objet est de stocker et d’exporter des éléments qui ne sont pas nommés par une structure hiérarchique; auxquels on accède principalement de manière atomique et en lecture seule; et pour lesquels les règles d’accès et de contrôle sont simples.
</div>


<div class="mw-translate-fuzzy">
Sur Arbutus, chaque projet dispose par défaut de 1To de stockage objet. Si ceci est insuffisant, vous pouvez soit utiliser notre [https://alliancecan.ca/fr/services/calcul-informatique-de-pointe/acces-aux-ressources/service-dacces-rapide service d'accès rapide]. Si vous avez besoin de plus de 10To, présentez une demande au prochain [https://alliancecan.ca/fr/services/calcul-informatique-de-pointe/acces-aux-ressources/concours-pour-lallocation-de-ressources concours pour l'allocation des ressources].  
Sur Arbutus, chaque projet dispose par défaut de 1 To de stockage objet. Si ceci est insuffisant, vous pouvez soit utiliser notre service d'accès rapide ou présenter une demande aux prochains concours pour l'allocation des ressources.
</div>


<div class="mw-translate-fuzzy">
Contrairement à un environnement de calcul sur une grappe, les fonctions d'administration du système pour le stockage objet d'un utilisateur sont la responsabilité de cet utilisateur, ce qui signifie que les opérations comme [[Backing up your VM/fr|la sauvegarde]] doivent être effectuées par l'utilisateur. Pour plus d'information, voyez [[Cloud storage options/fr|Options de stockage infonuagique]].
Contrairement à un environnement de calcul sur une grappe, les fonctions d'administration du système pour le stockage objet d'un utilisateur sont la responsabilité de cet utilisateur, ce qui signifie que les opérations comme [[Backing up your VM/fr|la sauvegarde des instances]] doivent être effectuées par l'utilisateur. Pour plus d'information, voyez [[Cloud storage options/fr|Options de stockage infonuagique]].
</div>


Nous offrons deux protocoles différents pour accéder à Object Store&nbsp;: Swift et Amazon Simple Storage Service (S3).
Nous offrons deux protocoles différents pour accéder à Object Store dans OpenStack&nbsp;: Swift et Amazon Simple Storage Service (S3).


<div class="mw-translate-fuzzy">
Ces protocoles se ressemblent beaucoup et sont interchangeables dans la plupart des cas. Il n’est pas nécessaire de vous en tenir toujours au même protocole puisque les conteneurs ou compartiments (<i>buckets</i>) et les objets sont accessibles par les protocoles Swift et S3. Certaines différences existent toutefois dans le contexte du stockage objet sur Arbutus.
Ces protocoles se ressemblent beaucoup et sont interchangeables dans la plupart des cas. Il n’est pas nécessaire de vous en tenir toujours au même protocole puisque les conteneurs ou compartiments (''buckets'') et les objets sont accessibles par les protocoles Swift et S3. Certaines différences existent toutefois dans le contexte du stockage objet sur Arbutus.
</div>


Swift est le protocole par défaut et est le plus simple à utiliser; vous n’avez pas à gérer les identifiants puisque l’accès se fait avec votre compte Arbutus. Par contre, Swift n’offre pas toutes les fonctionnalités de S3. Le principal cas d'usage est que vous devez utiliser S3 pour gérer vos conteneurs avec des politiques d'accès parce que Swift ne prend pas en charge ces politiques. De plus, S3 vous permet de créer et de gérer vos propres clés, ce qui peut être nécessaire si par exemple vous voulez créer du contenu en lecture seule pour une application. Consultez la liste des points compatibles des deux protocoles dans
Swift est le protocole par défaut et est le plus simple à utiliser; vous n’avez pas à gérer les identifiants puisque l’accès se fait avec votre compte Arbutus. Par contre, Swift n’offre pas toutes les fonctionnalités de S3. Le principal cas d'usage est que vous devez utiliser S3 pour gérer vos conteneurs avec des politiques d'accès parce que Swift ne prend pas en charge ces politiques. De plus, S3 vous permet de créer et de gérer vos propres clés, ce qui peut être nécessaire si par exemple vous voulez créer un compte en lecture seule pour une application en particulier. Consultez la [https://docs.openstack.org/swift/latest/s3_compat.html the OpenStack S3/Swift liste des compatibilités].


https://docs.openstack.org/swift/latest/s3_compat.html
==Accès et gestion du Object Store==


<div class="mw-translate-fuzzy">
Pour gérer le Object Store vous avez besoin de votre propre identifiant ainsi que de la clé secrète pour accéder au stockage.  Générez-les avec le  votre ID d'accès S3 et la clé secrète pour le protocole avec le [https://docs.alliancecan.ca/wiki/OpenStack_command_line_clients/fr client de ligne de commande OpenStack].
=Accès au stockage objet et gestion du contenu=
</div>


<div class="mw-translate-fuzzy">
<code>openstack ec2 credentials create</code>
Vous pouvez gérer votre stockage en sélectionnant ''Stockage d'objet'' sur https://arbutus.cloud.computecanada.ca/. Avec cette interface, les buckets sont appelés des ''conteneurs''&nbsp;: il ne faut pas les confondre avec les conteneurs de la fonctionnalité ''namespace'' du noyau Linux. Dans la page ''Stockage d'objet'', vous pouvez créer des conteneurs, téléverser des fichiers et créer des répertoires. Les conteneurs peuvent aussi être créés avec un client ligne de commande compatible avec S3.<br>
Il faut savoir que si vous créez un conteneur et le définissez comme étant public, tous les objets qu’il contient peuvent être vus en lecture seule par quiconque entre l’URL <code><nowiki>https://object-arbutus.cloud.computecanada.ca/<YOUR CONTAINER NAME HERE>/<YOUR OBJECT NAME HERE></nowiki></code> où vous nommez votre conteneur et le nom de l'objet.
</div>


<div class="mw-translate-fuzzy">
= Accès au Object Store =
Vous pouvez également utiliser le client ligne de commande OpenStack. Pour obtenir les directives sur l'installation et l'utilisation des clients de ligne de commande OpenStack, consultez  [[OpenStack Command Line Clients/fr|OpenStack ː Clients ligne de commande]].
Les politiques d'accès ne peuvent pas se faire via un navigateur web, mais par [[Arbutus object storage clients/fr|un client compatible SWIFT ou S3]]. L'accès aux conteneurs de données peut se faire de deux façons&nbsp;:
</div>


Générez votre ID d'accès S3 et la clé secrète pour le protocole avec le client de ligne de commande OpenStack.
# si vos politiques sont configurés (par défaut) comme étant privées, le stockage est accessible via un [[Arbutus_object_storage_clients/fr|un client compatible S3]] (par exemple s3cmd).
 
# si vos politiques sont configurés comme étant publiques, le stockage est accessible par un navigateur via un point HTTPS
<code>openstack ec2 credentials create</code>
<code>https://object-arbutus.cloud.computecanada.ca:443/DATA_CONTAINER/FILENAME</code>


<div class="mw-translate-fuzzy">
== Gestion du stockage objet sur Arbutus ==
<tt>s3cmd</tt> disponible sous Linux est l’outil recommandé pour accéder à notre plateforme S3; cependant, il existe aussi d’autres outils.
</div>


Chaque utilisateur est responsable des opérations qui sont effectuées dans son projet et donc les buckets eux-mêmes et la gestion de ces buckets sont la responsabilité de l’utilisateur.  
La manière recommandée de gérer les conteneurs et les objets dans le <b>Stockage d'Objet</b> d'Arbutus est d'utiliser l'outil <code>s3cmd</code>, qui est disponible sous Linux.
Notre documentation fournit des instructions spécifiques sur la [[Accessing_object_storage_with_s3cmd|configuration et la gestion des accès]] avec le client <code>s3cmd</code>.
Il est également possible d'utiliser d'autres [[Arbutus_object_storage_clients/fr|clients compatibles S3]] qui sont également compatibles avec le stockage objet d'Arbutus.


=== Généralités ===
De plus, nous pouvons effectuer certaines tâches de gestion pour notre stockage d'objets en utilisant la section [https://arbutus.cloud.computecanada.ca/project/containers Conteneurs] sous l'onglet <b>Stockage d'Objet</b> dans le [https://arbutus.cloud.computecanada.ca Tableau de bord OpenStack d'Arbutus].


<div class="mw-translate-fuzzy">
Cette interface fait référence aux <i>conteneurs de données</i>, également appelés <i>buckets</i> dans d'autres systèmes de stockage objet.
*Un bucket est la propriété de l’utilisateur qui l’a créé et ne peut pas être utilisé par un autre utilisateur.
*Vous pouvez rendre un bucket accessible en lecture seule à l’univers, ce qui vous donne une adresse URL qui peut être partagée et qui rend public le contenu du bucket.
*Les noms des buckets doivent être uniques pour tous les utilisateurs dans un même espace de stockage objet; il serait donc préférable d’utiliser le nom de votre projet comme préfixe pour les noms des buckets pour en assurer l’unicité. En bref, n’essayez pas de créer un bucket nommé ''test'', mais ''def-mon-nom-test'' est probablement disponible.
*La gestion des politiques en rapport un bucket se fait via un fichier <code>json</code>.
</div>


= Connexion et configuration de s3cmd  =
En utilisant le tableau de bord, nous pouvons créer de nouveaux conteneurs de données, téléverser des fichiers et créer des dossiers. Nous pouvons également créer des conteneurs de données en utilisant un [[Arbutus object storage clients|client compatible S3]].


Pour avoir accès au stockage objet, utilisez le point de chute HTTPS
{{quote|Veuillez noter que les conteneurs de données appartiennent à l'utilisateur qui les crée et ne peuvent pas être manipulés par d'autres utilisateurs.<br/>Par conséquent, vous êtes responsable de la gestion de vos conteneurs de données et de leur contenu au sein de votre projet d'infonuagique. }}


<code>object-arbutus.cloud.computecanada.ca:443</code>
Si vous créez un nouveau conteneur <b>public</b>, n'importe qui sur internet peut lire son contenu en naviguant simplement à l'adresse suivante


Le fichier suivant effectue une configuration simple de s3cmd. Vous devez utiliser ces valeurs, mais vous pouvez aussi explorer d’autres options de configuration pour vos besoins. Insérez les valeurs appropriées aux endroits nécessaires&nbsp;:
<code>
<nowiki>https://object-arbutus.cloud.computecanada.ca/<NOM DE VOTRE CONTENEUR>/<NOM DE VOTRE OBJET></nowiki>
</code>


<pre>[default]
avec vos noms de conteneurs et d'objets insérés à la place.
access_key = <redacted>
check_ssl_certificate = True
check_ssl_hostname = True
host_base = object-arbutus.cloud.computecanada.ca
host_bucket = object-arbutus.cloud.computecanada.ca
secret_key = <redacted>
use_https = True
</pre>


[[Arbutus_Object_Storage_Clients/fr#Configuration | Voyez comment utiliser la fonction <code>--configure</code> de s3cmd.]]
{{quote|Il est important de garder à l'esprit que chaque conteneur de données dans le [https://arbutus.cloud.computecanada.ca/project/containers Stockage d'Objet] d'Arbutus doit avoir un <b>nom unique vis-à-vis des autres utilisateurs</b>. Pour garantir cette singularité, nous pourrions vouloir préfixer nos noms de conteneurs de données avec le nom de notre projet afin d'éviter les conflits avec d'autres utilisateurs. Une règle utile à la louche est d'éviter d'utiliser des noms génériques comme <code>test</code> pour les conteneurs de données. Il est préférable d'utiliser des noms plus spécifiques et uniques comme <code>def-myname-test</code>.}}


= Exemples d'opérations avec un bucket =
Pour rendre un conteneur de données accessible au public, nous pouvons modifier sa politique pour autoriser l'accès public. Cela peut s'avérer pratique si nous avons à partager des fichiers avec une audience élargie. Nous pouvons gérer les politiques de conteneur avec des fichiers JSON, nous permettant de spécifier divers contrôles d'accès pour nos conteneurs et objets.


<div class="mw-translate-fuzzy">
=== Gestion des politiques de conteneurs de données (bucket) pour le stockage objet sur Arbutus ===
<ul>
<br/>
<li><p>Rendez un bucket public et accessible via le web avec</p>
{{Warning|title=Attention|content=Faites attention aux politiques, car une politique mal conçue peut vous empêcher d'accéder à votre conteneur de données.}}
<p><code>s3cmd setacl s3://testbucket --acl-public</code></p></li>
<li><p>Le bucket redevient privé ave</p>
<p><code>s3cmd setacl s3://testbucket --acl-private</code></p></li>
<li><p>Exemple d’une politique :</p>
<p>Créez d’abord un fichier <code>json</code></p>
<pre>{
&quot;Version&quot;: &quot;2012-10-17&quot;,
&quot;Statement&quot;: [{
    &quot;Effect&quot;: &quot;Allow&quot;,
    &quot;Principal&quot;: {&quot;AWS&quot;: [
    &quot;arn:aws:iam::rrg_cjhuofw:user/parsa7&quot;,
    &quot;arn:aws:iam::rrg_cjhuofw:user/dilbar&quot;
    ]},
    &quot;Action&quot;: [
    &quot;s3:ListBucket&quot;,
    &quot;s3:PutObject&quot;,
    &quot;s3:DeleteObject&quot;,
    &quot;s3:GetObject&quot;
    ],
    &quot;Resource&quot;: [
    &quot;arn:aws:s3:::testbucket/*&quot;,
    &quot;arn:aws:s3:::testbucket&quot;
    ]
}]
}
</pre>
<p>Ce fichier vous permet de définir des permissions particulières pour des groupes d’utilisateurs du bucket.</p>
<p>Il est aussi possible d’inclure des utilisateurs qui travaillent avec vous, mais qui sont associés à d’autres projets.</p>
<p>Quand votre fichier de politiques est prêt, vous pouvez les appliquer au bucket avec</p>
<p><code>s3cmd setpolicy testbucket.policy s3://testbucket</code></p>
<p>Pour des actions et des exemples plus complets, voyez  https://www.linode.com/docs/platform/object-storage/how-to-use-object-storage-acls-and-bucket-policies/</p></li></ul>
</div>


= Bucket policies =
Présentement, le [https://arbutus.cloud.computecanada.ca/project/containers Stockage d'Objet] d'Arbutus implémente seulement un sous-ensemble de la spécification AWS pour les [https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html politiques de conteneurs de données]. L'exemple suivant montre comment créer, appliquer et visualiser une politique. La première étape consiste à créer un fichier JSON de politique.
{{Warning
  |title=Attention
  |content=
Be careful with policies because an ill-conceived policy can lock you out of your bucket.
}}
'''Warning''': Be careful with policies because an ill-conceived policy can lock you out of your bucket.


Currently, Arbutus Object Storage only implements a subset of Amazon's specification for [[https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html bucket polices]]. The following example shows how to create, apply, and view a bucket's policy. The first step is create a policy json file:</p>
<syntaxhighlight lang="json">
<pre>{
{
     &quot;Version&quot;: &quot;2012-10-17&quot;,
     "Version": "2012-10-17",
     &quot;Id&quot;: &quot;S3PolicyId1&quot;,
     "Id": "S3PolicyId1",
     &quot;Statement&quot;: [
     "Statement": [
         {
         {
             &quot;Sid&quot;: &quot;IPAllow&quot;,
             "Sid": "IPAllow",
             &quot;Effect&quot;: &quot;Deny&quot;,
             "Effect": "Deny",
             &quot;Principal&quot;: &quot;*&quot;,
             "Principal": "*",
             &quot;Action&quot;: &quot;s3:*&quot;,
             "Action": "s3:*",
             &quot;Resource&quot;: [
             "Resource": [
                 &quot;arn:aws:s3:::testbucket&quot;,
                 "arn:aws:s3:::testbucket",
                 &quot;arn:aws:s3:::testbucket/*&quot;
                 "arn:aws:s3:::testbucket/*"
             ],
             ],
             &quot;Condition&quot;: {
             "Condition": {
                 &quot;NotIpAddress&quot;: {
                 "NotIpAddress": {
                     &quot;aws:SourceIp&quot;: &quot;206.12.0.0/16&quot;
                     "aws:SourceIp": "206.12.0.0/16",
                     &quot;aws:SourceIp&quot;: &quot;142.104.0.0/16&quot;
                     "aws:SourceIp": "142.104.0.0/16"
                 }
                 }
             }
             }
Line 154: Line 87:
     ]
     ]
}
}
</pre>
</syntaxhighlight>
<p>This example denies access except from the specified source IP address ranges in Classless Inter-Domain Routing (CIDR) notation. In this example the s3://testbucket is limited to the public IP address range (206.12.0.0/16) used by the Arbutus cloud and the public IP address range (142.104.0.0/16) used by the University of Victoria.</p>
 
Cet exemple refuse l'accès sauf à partir des plages d'adresses IP sources spécifiées en notation [https://fr.wikipedia.org/wiki/Adresse_IP#Agr%C3%A9gation_des_adresses CIDR (Classless Inter-Domain Routing)]. Dans cet exemple, le <code>s3://testbucket</code> est limité à la plage d'adresses IP publiques (206.12.0.0/16) utilisée par le nuage Arbutus et à la plage d'adresses IP publiques (142.104.0.0/16) utilisée par l'Université de Victoria.
 
Une fois que vous avez votre fichier de politique, vous pouvez l'appliquer à votre conteneur de données:
 
<code>s3cmd setpolicy testbucket.policy s3://testbucket</code>
 
Pour voir la politique, vous pouvez utiliser la commande suivante
 
<code>s3cmd info s3://testbucket</code>
 
=== Sous-ensemble ===


<p>Once you have your policy file, you can implement that policy on the bucket:</p>
En date de septembre 2023, nous supportons les actions suivantes&nbsp;:
<p><code>s3cmd setpolicy testbucket.policy s3://testbucket</code></p>


<p>To view the policy you can use the following command:</p>
* s3:AbortMultipartUpload
<p><code>s3cmd info s3://testbucket</code></p>
* s3:CreateBucket
* s3:DeleteBucketPolicy
* s3:DeleteBucket
* s3:DeleteBucketWebsite
* s3:DeleteObject
* s3:DeleteObjectVersion
* s3:DeleteReplicationConfiguration
* s3:GetAccelerateConfiguration
* s3:GetBucketAcl
* s3:GetBucketCORS
* s3:GetBucketLocation
* s3:GetBucketLogging
* s3:GetBucketNotification
* s3:GetBucketPolicy
* s3:GetBucketRequestPayment
* s3:GetBucketTagging
* s3:GetBucketVersioning
* s3:GetBucketWebsite
* s3:GetLifecycleConfiguration
* s3:GetObjectAcl
* s3:GetObject
* s3:GetObjectTorrent
* s3:GetObjectVersionAcl
* s3:GetObjectVersion
* s3:GetObjectVersionTorrent
* s3:GetReplicationConfiguration
* s3:IPAddress
* s3:NotIpAddress
* s3:ListAllMyBuckets
* s3:ListBucketMultipartUploads
* s3:ListBucket
* s3:ListBucketVersions
* s3:ListMultipartUploadParts
* s3:PutAccelerateConfiguration
* s3:PutBucketAcl
* s3:PutBucketCORS
* s3:PutBucketLogging
* s3:PutBucketNotification
* s3:PutBucketPolicy
* s3:PutBucketRequestPayment
* s3:PutBucketTagging
* s3:PutBucketVersioning
* s3:PutBucketWebsite
* s3:PutLifecycleConfiguration
* s3:PutObjectAcl
* s3:PutObject
* s3:PutObjectVersionAcl
* s3:PutReplicationConfiguration
* s3:RestoreObject


[[Category:CC-Cloud]]
[[Category:Cloud]]

Latest revision as of 16:21, 15 April 2024

Other languages:

Introduction

Le stockage objet est une installation de stockage plus simple qu'un système de fichiers hiérarchique normal, mais qui permet d'éviter certains goulots d'étranglement de la performance. Les objets peuvent être créés, remplacés ou supprimés, mais ne peuvent pas être modifiés sur place, comme c'est le cas avec le stockage traditionnel. Ce type de stockage est devenu très populaire en raison de sa capacité de gérer plusieurs fichiers et des fichiers de grande taille, ainsi que l'existence de nombreux outils compatibles.

Un objet est un fichier dans un espace de nommage (namespace) plat : un objet peut être créé ou téléchargé dans son ensemble, mais vous ne pouvez pas modifier les octets qu’il contient. Un objet utilise la nomenclature bucket:tag sans qu’il soit imbriqué davantage. Puisque les opérations sur les buckets concernent l’entièreté d’un fichier, le fournisseur peut utiliser une représentation interne plus simple. L’espace de nommage plat permet au fournisseur d’éviter les goulots d’étranglement des métadonnées; on peut dire que c’est une sorte de stockage de clés et de valeurs.

La meilleure façon d’utiliser le stockage objet est de stocker et d’exporter des éléments qui ne sont pas nommés dans une structure hiérarchique; auxquels on accède principalement de manière totale et en lecture seule; et pour lesquels les règles d’accès et de contrôle sont simples. Nous recommandons son utilisation avec des plateformes ou des logiciels qui sont conçus pour travailler avec des données qui vivent dans un espace de stockage objet.

Sur Arbutus, chaque projet dispose par défaut de 1To de stockage objet. Si ceci est insuffisant, vous pouvez soit utiliser notre service d'accès rapide. Si vous avez besoin de plus de 10To, présentez une demande au prochain concours pour l'allocation des ressources.

Contrairement à un environnement de calcul sur une grappe, les fonctions d'administration du système pour le stockage objet d'un utilisateur sont la responsabilité de cet utilisateur, ce qui signifie que les opérations comme la sauvegarde doivent être effectuées par l'utilisateur. Pour plus d'information, voyez Options de stockage infonuagique.

Nous offrons deux protocoles différents pour accéder à Object Store dans OpenStack : Swift et Amazon Simple Storage Service (S3).

Ces protocoles se ressemblent beaucoup et sont interchangeables dans la plupart des cas. Il n’est pas nécessaire de vous en tenir toujours au même protocole puisque les conteneurs ou compartiments (buckets) et les objets sont accessibles par les protocoles Swift et S3. Certaines différences existent toutefois dans le contexte du stockage objet sur Arbutus.

Swift est le protocole par défaut et est le plus simple à utiliser; vous n’avez pas à gérer les identifiants puisque l’accès se fait avec votre compte Arbutus. Par contre, Swift n’offre pas toutes les fonctionnalités de S3. Le principal cas d'usage est que vous devez utiliser S3 pour gérer vos conteneurs avec des politiques d'accès parce que Swift ne prend pas en charge ces politiques. De plus, S3 vous permet de créer et de gérer vos propres clés, ce qui peut être nécessaire si par exemple vous voulez créer un compte en lecture seule pour une application en particulier. Consultez la the OpenStack S3/Swift liste des compatibilités.

Accès et gestion du Object Store

Pour gérer le Object Store vous avez besoin de votre propre identifiant ainsi que de la clé secrète pour accéder au stockage. Générez-les avec le votre ID d'accès S3 et la clé secrète pour le protocole avec le client de ligne de commande OpenStack.

openstack ec2 credentials create

Accès au Object Store

Les politiques d'accès ne peuvent pas se faire via un navigateur web, mais par un client compatible SWIFT ou S3. L'accès aux conteneurs de données peut se faire de deux façons :

  1. si vos politiques sont configurés (par défaut) comme étant privées, le stockage est accessible via un un client compatible S3 (par exemple s3cmd).
  2. si vos politiques sont configurés comme étant publiques, le stockage est accessible par un navigateur via un point HTTPS

https://object-arbutus.cloud.computecanada.ca:443/DATA_CONTAINER/FILENAME

Gestion du stockage objet sur Arbutus

La manière recommandée de gérer les conteneurs et les objets dans le Stockage d'Objet d'Arbutus est d'utiliser l'outil s3cmd, qui est disponible sous Linux. Notre documentation fournit des instructions spécifiques sur la configuration et la gestion des accès avec le client s3cmd. Il est également possible d'utiliser d'autres clients compatibles S3 qui sont également compatibles avec le stockage objet d'Arbutus.

De plus, nous pouvons effectuer certaines tâches de gestion pour notre stockage d'objets en utilisant la section Conteneurs sous l'onglet Stockage d'Objet dans le Tableau de bord OpenStack d'Arbutus.

Cette interface fait référence aux conteneurs de données, également appelés buckets dans d'autres systèmes de stockage objet.

En utilisant le tableau de bord, nous pouvons créer de nouveaux conteneurs de données, téléverser des fichiers et créer des dossiers. Nous pouvons également créer des conteneurs de données en utilisant un client compatible S3.

Veuillez noter que les conteneurs de données appartiennent à l'utilisateur qui les crée et ne peuvent pas être manipulés par d'autres utilisateurs.
Par conséquent, vous êtes responsable de la gestion de vos conteneurs de données et de leur contenu au sein de votre projet d'infonuagique.

Si vous créez un nouveau conteneur public, n'importe qui sur internet peut lire son contenu en naviguant simplement à l'adresse suivante

https://object-arbutus.cloud.computecanada.ca/<NOM DE VOTRE CONTENEUR>/<NOM DE VOTRE OBJET>

avec vos noms de conteneurs et d'objets insérés à la place.

Il est important de garder à l'esprit que chaque conteneur de données dans le Stockage d'Objet d'Arbutus doit avoir un nom unique vis-à-vis des autres utilisateurs. Pour garantir cette singularité, nous pourrions vouloir préfixer nos noms de conteneurs de données avec le nom de notre projet afin d'éviter les conflits avec d'autres utilisateurs. Une règle utile à la louche est d'éviter d'utiliser des noms génériques comme test pour les conteneurs de données. Il est préférable d'utiliser des noms plus spécifiques et uniques comme def-myname-test.

Pour rendre un conteneur de données accessible au public, nous pouvons modifier sa politique pour autoriser l'accès public. Cela peut s'avérer pratique si nous avons à partager des fichiers avec une audience élargie. Nous pouvons gérer les politiques de conteneur avec des fichiers JSON, nous permettant de spécifier divers contrôles d'accès pour nos conteneurs et objets.

Gestion des politiques de conteneurs de données (bucket) pour le stockage objet sur Arbutus



Attention

Faites attention aux politiques, car une politique mal conçue peut vous empêcher d'accéder à votre conteneur de données.



Présentement, le Stockage d'Objet d'Arbutus implémente seulement un sous-ensemble de la spécification AWS pour les politiques de conteneurs de données. L'exemple suivant montre comment créer, appliquer et visualiser une politique. La première étape consiste à créer un fichier JSON de politique.

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::testbucket",
                "arn:aws:s3:::testbucket/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "206.12.0.0/16",
                    "aws:SourceIp": "142.104.0.0/16"
                }
            }
        }
    ]
}

Cet exemple refuse l'accès sauf à partir des plages d'adresses IP sources spécifiées en notation CIDR (Classless Inter-Domain Routing). Dans cet exemple, le s3://testbucket est limité à la plage d'adresses IP publiques (206.12.0.0/16) utilisée par le nuage Arbutus et à la plage d'adresses IP publiques (142.104.0.0/16) utilisée par l'Université de Victoria.

Une fois que vous avez votre fichier de politique, vous pouvez l'appliquer à votre conteneur de données:

s3cmd setpolicy testbucket.policy s3://testbucket

Pour voir la politique, vous pouvez utiliser la commande suivante

s3cmd info s3://testbucket

Sous-ensemble

En date de septembre 2023, nous supportons les actions suivantes :

  • s3:AbortMultipartUpload
  • s3:CreateBucket
  • s3:DeleteBucketPolicy
  • s3:DeleteBucket
  • s3:DeleteBucketWebsite
  • s3:DeleteObject
  • s3:DeleteObjectVersion
  • s3:DeleteReplicationConfiguration
  • s3:GetAccelerateConfiguration
  • s3:GetBucketAcl
  • s3:GetBucketCORS
  • s3:GetBucketLocation
  • s3:GetBucketLogging
  • s3:GetBucketNotification
  • s3:GetBucketPolicy
  • s3:GetBucketRequestPayment
  • s3:GetBucketTagging
  • s3:GetBucketVersioning
  • s3:GetBucketWebsite
  • s3:GetLifecycleConfiguration
  • s3:GetObjectAcl
  • s3:GetObject
  • s3:GetObjectTorrent
  • s3:GetObjectVersionAcl
  • s3:GetObjectVersion
  • s3:GetObjectVersionTorrent
  • s3:GetReplicationConfiguration
  • s3:IPAddress
  • s3:NotIpAddress
  • s3:ListAllMyBuckets
  • s3:ListBucketMultipartUploads
  • s3:ListBucket
  • s3:ListBucketVersions
  • s3:ListMultipartUploadParts
  • s3:PutAccelerateConfiguration
  • s3:PutBucketAcl
  • s3:PutBucketCORS
  • s3:PutBucketLogging
  • s3:PutBucketNotification
  • s3:PutBucketPolicy
  • s3:PutBucketRequestPayment
  • s3:PutBucketTagging
  • s3:PutBucketVersioning
  • s3:PutBucketWebsite
  • s3:PutLifecycleConfiguration
  • s3:PutObjectAcl
  • s3:PutObject
  • s3:PutObjectVersionAcl
  • s3:PutReplicationConfiguration
  • s3:RestoreObject