Utiliser les secrets en toute sécurité: un modÚle d'utilisation de HashiCorp Vault

HashiCorp Vault est un outil open source qui fournit un moyen sĂ»r et sĂ©curisĂ© de stocker et de distribuer des secrets tels que des clĂ©s API, des jetons d'accĂšs et des mots de passe. Des logiciels tels que Vault peuvent ĂȘtre critiques lors du dĂ©ploiement d'applications nĂ©cessitant des secrets ou des donnĂ©es sensibles.







Selon une étude récente menée par des scientifiques de la North Carolina State University, plus de 100 000 référentiels publics GitHub contiennent des secrets d'application open source directement dans le code source. Cette étude - des jetons d'API privés aux clés cryptographiques - n'a analysé qu'environ 13% des référentiels publics GitHub - montre que la sécurisation correcte des secrets d'application est l'une des méthodes les plus négligées de protection des informations dans les logiciels.







Si l'ampleur de l'impact est surprenante, il est important de noter que ce problĂšme ne se limite pas aux projets open source. MĂȘme les rĂ©fĂ©rentiels de code source privĂ©s peuvent rĂ©vĂ©ler des secrets s'ils ne sont pas correctement sĂ©curisĂ©s. Prenez la faille de sĂ©curitĂ© chez Buffer Inc. en 2013. Ce qui a commencĂ© comme un accĂšs illĂ©gal au propre code source de Buffer a divulguĂ© les informations d'identification de l'API Twitter de l'entreprise, ce qui a fini par spammer les comptes Twitter d'innombrables clients.







Je ne vais pas opprimer Buffer pour le moment. Les entreprises sont piratées tous les jours et Buffer a donné une réponse de premier ordre. Leur transparence non filtrée et les rapports d'incidents ont servi d'exemple intéressant de l'importance de la gestion du secret en tant que principe fondamental de la sécurité de l'information. Mais cela soulÚve également la question de savoir comment gérer au mieux les secrets dans une organisation évolutive en pleine croissance.







Introduction Ă  HashiCorp Vault



Je suis un grand fan de HashiCorp. Leur approche indépendante des fournisseurs des outils DevOps fournit d'excellentes solutions portables qui résistent aux fournisseurs de cloud individuels et se concentrent sur la résolution de problÚmes du monde réel. Leur outil de gestion des secrets, Vault , ne fait pas exception.







, Vault , .







Vault



Vault — Vault HashiCorp







Vault, . HashiCorp, Vault , macOS, Windows, Linux, Solaris BSD. Raspberry Pi.









Vault . Vault. , , , . HashiCorp:







Vault, : , , . .







, vault server -dev



(-dev



, , ):







$ vault server -dev
==> Vault server configuration:

        Api Address: http://127.0.0.1:8200
                Cgo: disabled
    Cluster Address: https://127.0.0.1:8201
        Listener 1: tcp (addr: "127.0.0.1:8200", cluster address: "127.0.0.1:8201", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")
        Log Level: info
            Mlock: supported: false, enabled: false
            Storage: inmem
            Version: Vault v1.2.1

WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memory
and starts unsealed with a single unseal key. The root token is already
authenticated to the CLI, so you can immediately begin using Vault.

You may need to set the following environment variable:

    $ export VAULT_ADDR='http://127.0.0.1:8200'

The unseal key and root token are displayed below in case you want to seal/unseal the Vault or re-authenticate.

Unseal Key: p8MumXfy57bh2T1FxdvZSmHhxqr7aQAByPpfE4PLujk=
Root Token: s.aSQmpEYEi5MKelf5TDLPC6r9

Development mode should NOT be used in production installations!

==> Vault server started! Log data will stream in below:
      
      





, , . , ( , ). , , VAULT_ADDR, Vault , .







Unseal Key Root Token. , Root Token , / Vault Vault .









Vault . , Vault , , , . Vault (unsealed). , , (Unseal Key), (unseal) . Vault , .







Vault . , - :







$ vault operator init

Unseal Key 1: 4jYbl2CBIv6SpkKj6Hos9iD32k5RfGkLzlosrrq/JgOm
Unseal Key 2: B05G1DRtfYckFV5BbdBvXq0wkK5HFqB9g2jcDmNfTQiS
Unseal Key 3: Arig0N9rN9ezkTRo7qTB7gsIZDaonOcc53EHo83F5chA
Unseal Key 4: 0cZE0C/gEk3YHaKjIWxhyyfs8REhqkRW/CSXTnmTilv+
Unseal Key 5: fYhZOseRgzxmJCmIqUdxEm9C3jB5Q27AowER9w4FC2Ck

Initial Root Token: s.KkNJYWF5g0pomcCLEmDdOVCW

Vault initialized with 5 key shares and a key threshold of 3. Please securely distribute the key shares printed above. When the Vault is re-sealed, restarted, or stopped, you must supply at least 3 of these keys to unseal it before it can start servicing requests.

Vault does not store the generated master key. Without at least 3 keys to reconstruct the master key, Vault will remain permanently sealed!

It is possible to generate new unseal keys, provided you have a quorum of existing unseal keys shares. See "vault operator rekey" for more information.
      
      







, , , . vault login



, . Root Token (. ). , , :







$ vault login
Token (will be hidden):
Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "vault login" again. Future Vault requests will automatically use this token.

Key                 Value
---                 -----
token               s.aSQmpEYEi5MKelf5TDLPC6r9
token_accessor      MaJhao2R54EdV9fDq7sL11d4
token_duration      ∞
token_renewable     false
token_policies      ["root"]
identity_policies   []
policies            ["root"] 
      
      







Vault HashiCorp , Vault . vault kv put



:







$ vault kv put secret/foo bar=baz
Key             Value
---             -----
created_time    2019-08-09T16:43:10.604124Z
deletion_time   n/a
destroyed       false
version         1
      
      





, foo



secret



bar=baz



, . created_time



, deletion_time



destroyed



, version



, , .







, , , :







$ vault kv put secret/foo bat=ball
Key             Value
---             -----
created_time    2019-08-09T16:43:32.638788Z
deletion_time   n/a
destroyed       false
version         2
      
      





, ? , , , .









$ vault kv list secret
Keys
----
foo
      
      





— . — . , :







, , , . , vault kv get



:







$ vault kv get secret/foo
====== Metadata ======
Key             Value
---             -----
created_time    2019-08-09T16:43:32.638788Z
deletion_time   n/a
destroyed       false
version         2

=== Data ===
Key Value
--- -----
bat ball
      
      





Vault , , -version



:







$ vault kv get -version=1 secret/foo
====== Metadata ======
Key             Value
---             -----
created_time    2019-08-09T16:43:10.604124Z
deletion_time   n/a
destroyed       false   
version         1

=== Data ===
Key Value
--- -----
bar baz
      
      





, , , (release) , .









, ( ). , , «» , : delete



destroy



. , foo



:







$ vault kv delete -versions=1 secret/foo
Success! Data deleted (if it existed) at: secret/foo
      
      





(deleted



) GET, :







$ vault kv get -version=1 secret/foo
====== Metadata ======
Key             Value
---             -----
created_time    2019-08-09T16:43:10.604124Z
deletion_time   2019-08-09T16:45:39.664577Z
destroyed       false
version         1
      
      





, destroy:







$ vault kv destroy -versions=1 secret/foo
Success! Data written to: secret/destroy/foo
      
      





, , destroy , :







$ vault kv get -version=1 secret/foo
====== Metadata ======
Key             Value
---             -----
created_time    2019-08-09T16:43:10.604124Z
deletion_time   2019-08-09T16:45:39.664577Z
destroyed       true
version         1
      
      





HashiCorp Vault



Vault — , — , . Vault , , Vault .







Secrets engines



$ vault secrets enable database
Success! Enabled the database secrets engine at: database/
      
      





Vault ( , kv



). — . , - . , (database



) MySQL MariaDB, root .









$ vault auth enable github
Success! Enabled github auth method at: github/
      
      





Vault . GitHub, Vault , GitHub — GitHub — . , LDAP Okta, Vault.









$ vault write auth/userpass/users/test policies="dev-readonly,logs"
      
      





. GitHub , . Vault RBAC, CRUD- . .







Vault



Vault, . , Vault, . , API, , Vault, Vault HashiCorp – .







En plus de sécuriser vos applications et votre infrastructure, vous avez besoin d'un plan de réponse rapide aux incidents. Consultez notre guide gratuit, De réactif à proactif: 6 façons de transformer votre surveillance et votre réponse aux incidents, pour créer des flux de travail de gestion des incidents hautement collaboratifs et transparents.








All Articles