HashiCorp Vaultは、APIキー、アクセストークン、パスワードなどのシークレットを保存および配布するための安全で安全な方法を提供するオープンソースツールです。秘密や機密データを必要とするアプリケーションを展開する場合、Vaultなどのソフトウェアが重要になる可能性があります。
ノースカロライナ州立大学の科学者による最近の研究によると、100,000を超える公開GitHubリポジトリには、オープンソースのアプリケーションシークレットがソースコードに直接含まれています。この調査(プライベートAPIトークンから暗号化キーまで)は、パブリックGitHubリポジトリの約13%のみをスキャンしましたが、アプリケーションシークレットを適切に保護することは、ソフトウェアの情報を保護する最も見過ごされている方法の1つであることを示しています。
影響の大きさは驚くべきものですが、この問題はオープンソースプロジェクトに限定されないことに注意することが重要です。適切に保護されていない場合、プライベートソースコードリポジトリでさえ秘密を明らかにする可能性があります。 BufferIncでセキュリティ違反を取ります。 2013年に。 Buffer自身のソースコードへの違法なアクセスとして始まったものが、会社のTwitter API資格情報を漏らし、最終的には無数の顧客のTwitterアカウントをスパムしました。
今はBufferを圧迫するつもりはありません。企業は毎日ハッキングされており、Bufferは一流の答えを出しました。彼らのフィルタリングされていない透明性とインシデント報告は、情報セキュリティの基本原則としての秘密管理の重要性の興味深い例を提供しました。しかし、それはまた、成長しているスケーラブルな組織で秘密を管理する最善の方法の問題を提起します。
HashiCorpVaultの概要
私はHashiCorpの大ファンです。DevOpsツールに対するベンダーに依存しないアプローチは、個々のクラウドプロバイダーから抽象化し、実際の問題の解決に焦点を当てた優れたポータブルソリューションを提供します。彼らの秘密の管理ツールであるVaultも例外ではありません。
, Vault , .
Vault
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 – .
アプリケーションとインフラストラクチャを保護することに加えて、迅速なインシデント対応計画が必要です。無料のガイド「リアクティブからプロアクティブへ:監視とインシデント対応を変革する6つの方法」を確認して、高度に協調的で透過的なインシデント管理ワークフローを作成してください。