AppSpec section « autorisations » (déploiements EC2/sur site uniquement) - AWS CodeDeploy

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AppSpec section « autorisations » (déploiements EC2/sur site uniquement)

La section 'permissions' spécifie les autorisations spéciales éventuelles qui doivent être appliquées aux fichiers et aux répertoires/dossiers de la section 'files' après leur copie sur l'instance. Vous pouvez spécifier plusieurs instructions object. Cette section est facultative. Elle s'applique uniquement aux instances Amazon Linux, Ubuntu Server et RHEL.

Note

La 'permissions' section est uniquement utilisée pour les déploiements EC2/sur site. Il n'est pas utilisé pour les AWS déploiements Lambda ou Amazon ECS.

Cette section a la structure suivante :

permissions: - object: object-specification pattern: pattern-specification except: exception-specification owner: owner-account-name group: group-name mode: mode-specification acls: - acls-specification context: user: user-specification type: type-specification range: range-specification type: - object-type

Les instructions sont les suivantes :

  • object : obligatoire. Il s'agit d'un ensemble d'objets de système de fichiers (fichiers ou répertoires/dossiers) auxquels les autorisations spécifiées sont appliquées après la copie des objets de système de fichiers sur l'instance.

    Spécifiez object avec une chaîne.

  • pattern : facultatif. Spécifie un modèle pour appliquer des autorisations. Si elles ne sont pas spécifiées ou si elles sont spécifiées avec les caractères spéciaux "**", les autorisations sont appliquées à tous les fichiers ou répertoires correspondants, selon leur type.

    Spécifiez pattern avec une chaîne placée entre guillemets ("").

  • except : facultatif. Spécifie les fichiers ou répertoires qui sont des exceptions par rapport à pattern

    Spécifiez except avec une liste de chaînes séparées par des virgules entre crochets.

  • owner : facultatif. Nom du propriétaire de object. Si cette instruction n'est pas spécifiée, tous les propriétaires existants appliqués à la structure de fichiers ou de répertoires/dossiers d'origine restent inchangés après l'opération de copie.

    Spécifiez owner avec une chaîne.

  • group : facultatif. Nom du groupe pour object. Si cette instruction n'est pas spécifiée, tous les groupes existants appliqués à la structure de fichiers ou de répertoires/dossiers d'origine restent inchangés après l'opération de copie.

    Spécifiez group avec une chaîne.

  • mode : facultatif. Une valeur numérique spécifiant les autorisations à object appliquer. Le réglage du mode suit la syntaxe de la commande Linux chmod.

    Important

    Si la valeur inclut un zéro initial, vous devez l'entourer de guillemets doubles ou supprimer le zéro initial afin qu'il ne reste que trois chiffres.

    Note

    La notation symbolique telle que celle-ci n'u+xest pas prise en charge pour le mode paramètre.

    Exemples :

    • mode: "0644"donne des autorisations de lecture et d'écriture au propriétaire de l'objet (6), des autorisations de lecture seule au groupe (4) et des autorisations de lecture seule à tous les autres utilisateurs (4).

    • mode: 644accorde les mêmes autorisations quemode: "0644".

    • mode: 4755définit l'attribut setuid (4), donne des autorisations de contrôle complètes au propriétaire (7), donne des autorisations de lecture et d'exécution au groupe (5) et donne des autorisations de lecture et d'exécution à tous les autres utilisateurs (5).

      Pour plus d'exemples, consultez la documentation de la commande Linux chmod.

      Si aucun mode n'est spécifié, tous les modes existants appliqués à la structure de fichier ou de dossier d'origine restent inchangés après l'opération de copie.

  • acls : facultatif. Liste de chaînes de caractères représentant une ou plusieurs entrées de liste de contrôle d'accès (ACL) appliquées à object. Par exemple, u:bob:rw représente des autorisations de lecture et d'écriture pour l'utilisateur bob. (Pour plus d'exemples, consultez les exemples de formats d'entrées ACL dans la documentation relative à la commande Linux setfacl.) Vous pouvez spécifier plusieurs entrées ACL. Si l'instruction acls n'est pas spécifiée, toutes les ACL existantes appliquées à la structure de fichiers ou de répertoires/dossiers d'origine restent inchangées après l'opération de copie. Elles remplacent toutes les ACL existantes.

    Spécifiez acls avec un tiret (-) suivi d'un espace, puis d'une chaîne (par exemple, - u:jane:rw). Si vous avez plusieurs listes ACL, chacune est spécifiée sur une ligne distincte.

    Note

    La définition d'utilisateurs anonymes, de groupes anonymes ou d'autres entrées ACL similaires entraîne l'échec du AppSpec fichier. Utilisez mode pour spécifier ces types d'autorisations à la place.

  • context : facultatif. Pour les instances prenant en charge Security-Enhanced Linux (SELinux), il s'agit d'une liste d'étiquettes de contexte concernant la sécurité à appliquer aux objets copiés. Les étiquettes sont spécifiées en tant que clés contenant user, type et range. (Pour plus d'informations, consultez la documentation SELinux.) Chaque clé est entrée avec une chaîne. Si cette instruction n'est pas spécifiée, toutes les étiquettes existantes appliquées à la structure de fichiers ou de répertoires/dossiers d'origine restent inchangées après l'opération de copie.

    • user : facultatif. Utilisateur SELinux.

    • type : facultatif. Nom du type SELinux.

    • range : facultatif. Spécificateur de plage SELinux. Cette instruction n'a aucun effet, sauf si Multi-Level Security (MLS) et Multi-Category Security (MCS) sont activés sur la machine. Si ces options ne sont pas activées, range prend par défaut la valeur s0.

    Spécifiez context avec une chaîne (par exemple, user: unconfined_u). Chaque instruction context est spécifiée sur une ligne distincte.

  • type : facultatif. Types d'objets auxquels appliquer les autorisations spécifiées. type est une chaîne qui peut être définie sur file ou directory. Si file est spécifié, les autorisations sont appliquées uniquement aux fichiers contenus immédiatement dans object après l'opération de copie (et non à object proprement dit). Si directory est spécifié, les autorisations sont appliquées de façon récursive à tous les répertoires/dossiers, où qu'ils soient dans object, après l'opération de copie (mais pas à object proprement dit).

    Spécifiez type avec un tiret (-) suivi d'un espace, puis d'une chaîne (par exemple, - file).

Exemple de section « Autorisations »

L'exemple suivant montre comment spécifier la section 'permissions' avec les instructions object, pattern, except, owner, mode et type. Cet exemple s'applique uniquement aux instances Amazon Linux, Ubuntu Server et RHEL. Dans cet exemple, supposez que les fichiers et dossiers suivants sont copiés vers l'instance dans la hiérarchie :

/tmp `-- my-app |-- my-file-1.txt |-- my-file-2.txt |-- my-file-3.txt |-- my-folder-1 | |-- my-file-4.txt | |-- my-file-5.txt | `-- my-file-6.txt `-- my-folder-2 |-- my-file-7.txt |-- my-file-8.txt |-- my-file-9.txt `-- my-folder-3

Le AppSpec fichier suivant indique comment définir des autorisations sur ces fichiers et dossiers une fois qu'ils ont été copiés :

version: 0.0 os: linux # Copy over all of the folders and files with the permissions they # were originally assigned. files: - source: ./my-file-1.txt destination: /tmp/my-app - source: ./my-file-2.txt destination: /tmp/my-app - source: ./my-file-3.txt destination: /tmp/my-app - source: ./my-folder-1 destination: /tmp/my-app/my-folder-1 - source: ./my-folder-2 destination: /tmp/my-app/my-folder-2 # 1) For all of the files in the /tmp/my-app folder ending in -3.txt # (for example, just my-file-3.txt), owner = adm, group = wheel, and # mode = 464 (-r--rw-r--). permissions: - object: /tmp/my-app pattern: "*-3.txt" owner: adm group: wheel mode: 464 type: - file # 2) For all of the files ending in .txt in the /tmp/my-app # folder, but not for the file my-file-3.txt (for example, # just my-file-1.txt and my-file-2.txt), # owner = ec2-user and mode = 444 (-r--r--r--). - object: /tmp/my-app pattern: "*.txt" except: [my-file-3.txt] owner: ec2-user mode: 444 type: - file # 3) For all the files in the /tmp/my-app/my-folder-1 folder except # for my-file-4.txt and my-file-5.txt, (for example, # just my-file-6.txt), owner = operator and mode = 646 (-rw-r--rw-). - object: /tmp/my-app/my-folder-1 pattern: "**" except: [my-file-4.txt, my-file-5.txt] owner: operator mode: 646 type: - file # 4) For all of the files that are immediately under # the /tmp/my-app/my-folder-2 folder except for my-file-8.txt, # (for example, just my-file-7.txt and # my-file-9.txt), owner = ec2-user and mode = 777 (-rwxrwxrwx). - object: /tmp/my-app/my-folder-2 pattern: "**" except: [my-file-8.txt] owner: ec2-user mode: 777 type: - file # 5) For all folders at any level under /tmp/my-app that contain # the name my-folder but not # /tmp/my-app/my-folder-2/my-folder-3 (for example, just # /tmp/my-app/my-folder-1 and /tmp/my-app/my-folder-2), # owner = ec2-user and mode = 555 (dr-xr-xr-x). - object: /tmp/my-app pattern: "*my-folder*" except: [tmp/my-app/my-folder-2/my-folder-3] owner: ec2-user mode: 555 type: - directory # 6) For the folder /tmp/my-app/my-folder-2/my-folder-3, # group = wheel and mode = 564 (dr-xrw-r--). - object: /tmp/my-app/my-folder-2/my-folder-3 group: wheel mode: 564 type: - directory

Les autorisations obtenues sont les suivantes :

-r--r--r-- ec2-user root my-file-1.txt -r--r--r-- ec2-user root my-file-2.txt -r--rw-r-- adm wheel my-file-3.txt dr-xr-xr-x ec2-user root my-folder-1 -rw-r--r-- root root my-file-4.txt -rw-r--r-- root root my-file-5.txt -rw-r--rw- operator root my-file-6.txt dr-xr-xr-x ec2-user root my-folder-2 -rwxrwxrwx ec2-user root my-file-7.txt -rw-r--r-- root root my-file-8.txt -rwxrwxrwx ec2-user root my-file-9.txt dr-xrw-r-- root wheel my-folder-3

L'exemple suivant montre comment spécifier la section 'permissions' avec l'ajout des instructions acls et context. Cet exemple s'applique uniquement aux instances Amazon Linux, Ubuntu Server et RHEL.

permissions: - object: /var/www/html/WordPress pattern: "**" except: [/var/www/html/WordPress/ReadMe.txt] owner: bob group: writers mode: 644 acls: - u:mary:rw - u:sam:rw - m::rw context: user: unconfined_u type: httpd_sys_content_t range: s0 type: - file