mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-02-17 23:45:29 -05:00
149 lines
5.7 KiB
Markdown
149 lines
5.7 KiB
Markdown
|
---
|
|||
|
id: paquets
|
|||
|
title: "Paquet d'accès"
|
|||
|
---
|
|||
|
Il s'agit d'une série de restrictions qui permettent ou restreignent l'accès au stockage local en fonction de critères spécifiques.
|
|||
|
|
|||
|
Les restrictions de sécurité dépendent du plugin que vous utilisez. `verdaccio` utilise par défaut le plugin [htpasswd](https://github.com/verdaccio/verdaccio-htpasswd). Si vous utilisez un autre plugin, l'opération peut être différente. Le plugin par défaut ne gère pas directement `allow_access` et `allow_publish`, mais utilise une alternative interne au cas où le plugin ne serait pas prêt pour cela.
|
|||
|
|
|||
|
Pour plus d'informations sur les autorisations, consultez la [section d'authentification du wiki](auth.md).
|
|||
|
|
|||
|
### Utilisation
|
|||
|
|
|||
|
```yalm
|
|||
|
packages:
|
|||
|
# scoped packages
|
|||
|
'@scope/*':
|
|||
|
access: $all
|
|||
|
publish: $all
|
|||
|
proxy: server2
|
|||
|
|
|||
|
'private-*':
|
|||
|
access: $all
|
|||
|
publish: $all
|
|||
|
proxy: uplink1
|
|||
|
|
|||
|
'**':
|
|||
|
# allow all users (including non-authenticated users) to read and
|
|||
|
# publish all packages
|
|||
|
access: $all
|
|||
|
publish: $all
|
|||
|
proxy: uplink2
|
|||
|
```
|
|||
|
|
|||
|
si rien n'est spécifié, le choix est par défaut
|
|||
|
|
|||
|
```yaml
|
|||
|
packages:
|
|||
|
'**':
|
|||
|
access: $all
|
|||
|
publish: $authenticated
|
|||
|
```
|
|||
|
|
|||
|
La liste des groupes valides selon les plugins par défaut sont
|
|||
|
|
|||
|
```js
|
|||
|
'$all', '$anonymous', '@all', '@anonymous', 'all', 'undefined', 'anonymous'
|
|||
|
```
|
|||
|
|
|||
|
Tous les utilisateurs reçoivent tous ces groupes d'autorisations, qu'ils soient anonymes ou non, plus les groupes fournis par le plug-in. Dans le cas `htpasswd`, rejetez le nom d'utilisateur en tant que groupe. Par exemple, si vous êtes connectés en tant que `npmUser`, la liste des noms sera.
|
|||
|
|
|||
|
```js
|
|||
|
// groups without '$' are going to be deprecated eventually
|
|||
|
'$all', '$anonymous', '@all', '@anonymous', 'all', 'undefined', 'anonymous', 'npmUser'
|
|||
|
```
|
|||
|
|
|||
|
Si vous souhaitez protéger un ensemble spécifique de paquets au sein de votre groupe, vous devez procéder de la même manière. Utilisons un `Regex` qui couvre tous les paquets avec le préfixe `npmuser -`. Nous vous recommandons d'utiliser un préfixe pour vos paquets afin de faciliter leur protection.
|
|||
|
|
|||
|
```yaml
|
|||
|
packages:
|
|||
|
'npmuser-*':
|
|||
|
access: npmuser
|
|||
|
publish: npmuser
|
|||
|
```
|
|||
|
|
|||
|
Redémarrez `verdaccio` et essayez d'installer `npmuser-core` dans votre console.
|
|||
|
|
|||
|
```bash
|
|||
|
$ npm install npmuser-core
|
|||
|
npm install npmuser-core
|
|||
|
npm ERR! code E403
|
|||
|
npm ERR! 403 Forbidden: npmuser-core@latest
|
|||
|
|
|||
|
npm ERR! A complete log of this run can be found in:
|
|||
|
npm ERR! /Users/user/.npm/_logs/2017-07-02T12_20_14_834Z-debug.log
|
|||
|
```
|
|||
|
|
|||
|
Vous pouvez changer le comportement existant en utilisant un autre plugin d'authentification. `verdaccio` vérifie simplement si l'utilisateur qui a tenté d'accéder ou de publier un paquet spécifique appartient au groupe approprié.
|
|||
|
|
|||
|
#### Définir plusieurs groupes
|
|||
|
|
|||
|
Il est facile de définir plusieurs groupes d’accès, définissez-les juste avec un espace blanc entre eux.
|
|||
|
|
|||
|
```yaml
|
|||
|
'company-*':
|
|||
|
access: admin internal
|
|||
|
publish: admin
|
|||
|
proxy: server1
|
|||
|
'supersecret-*':
|
|||
|
access: secret super-secret-area ultra-secret-area
|
|||
|
publish: secret ultra-secret-area
|
|||
|
proxy: server1
|
|||
|
```
|
|||
|
|
|||
|
#### Bloquer l’accès à l’ensemble des paquets
|
|||
|
|
|||
|
Si vous souhaitez bloquer l’accès/publier à un groupe spécifique de paquets. alors ne définissez pas `access` et `publish`.
|
|||
|
|
|||
|
```yaml
|
|||
|
packages:
|
|||
|
'old-*':
|
|||
|
'**':
|
|||
|
access: $all
|
|||
|
publish: $authenticated
|
|||
|
```
|
|||
|
|
|||
|
#### Bloquer la transmission d'un groupe de paquets spécifiques
|
|||
|
|
|||
|
Vous voudrez peut-être empêcher les registres distants d’atteindre un ou plusieurs paquets tout en autorisant les autres à accéder à différentes *uplinks*.
|
|||
|
|
|||
|
Voyons l’exemple suivant:
|
|||
|
|
|||
|
```yaml
|
|||
|
packages:
|
|||
|
'jquery':
|
|||
|
access: $all
|
|||
|
publish: $all
|
|||
|
'my-company-*':
|
|||
|
access: $all
|
|||
|
publish: $authenticated
|
|||
|
'@my-local-scope/*':
|
|||
|
access: $all
|
|||
|
publish: $authenticated
|
|||
|
'**':
|
|||
|
access: $all
|
|||
|
publish: $authenticated
|
|||
|
proxy: npmjs
|
|||
|
```
|
|||
|
|
|||
|
Décrivons ce que nous voulons avec l'exemple ci-dessus:
|
|||
|
|
|||
|
* Je souhaite héberger ma propre dépendance `jquery` mais je dois éviter de la transférer.
|
|||
|
* Je veux toutes les dépendances qui coïncident avec <`my-company - *` mais je dois éviter de les transférer.
|
|||
|
* Je veux toutes les dépendances qui se trouvent dans la portée `my-local-scope`, mais je dois éviter de les transférer.
|
|||
|
* Je veux transférer toutes les dépendances restantes.
|
|||
|
|
|||
|
**N'oubliez pas l'importance de la commande de colis et utilisez toujours le double astérisque**. Parce que si vous ne l'incluez pas, `verdaccio` l'inclura à votre place et cela affectera la manière dont vos dépendances seront résolues.
|
|||
|
|
|||
|
### Configuration
|
|||
|
|
|||
|
Vous pouvez définir mutiple `packages` et chacun d’eux doit avoir un unique `Regex`. La syntaxe est basée sur [minimatch glob expressions](https://github.com/isaacs/minimatch).
|
|||
|
|
|||
|
| Propriété | Type | Obligatoire | Exemple | Soutien | Description |
|
|||
|
| --------- | -------------------- | ----------- | -------------- | ------- | -------------------------------------------------- |
|
|||
|
| accès | chaîne de caractères | Non | $all | tous | définir des groupes autorisés à accéder au package |
|
|||
|
| publier | chaîne | Non | $authenticated | tous | définir les groupes autorisés à publier |
|
|||
|
| proxy | chaîne de caractères | Non | npmjs | tous | limite la recherche d'un uplink spécifique |
|
|||
|
| stockage | booléenne | Non | [vrai,faux] | tous | TODO |
|
|||
|
|
|||
|
> Nous vous signalons qu'il est déconseillé d'utiliser les **allow_access **/**allow_publish** et les **proxy_access** qui sont obsolètes et qui seront bientôt supprimés. version courte de chacun de ces éléments (**acces**/ **publish**/**proxy**).
|