🔒 Учебник по Vault. Часть 5 — Information Security Squad
🔒 Учебник по Vault. Часть 5

До сих пор наш базовый контейнер Vault работал в dev, но он не может быть повторно развернут в его нынешнем виде.

Мы бы никогда не использовали хранилище для ключей в памяти (вместо того, чтобы сохранять их).

Мы можем использовать HCL для определения серверной части хранилища и локального запуска Vault для проверки HCL.

Для иллюстрации я создал образец учетной записи хранения Azure, контейнер BLOB-объектов и предоставил ключ.

$ cat idj-azure-vault.hcl 
storage "azure" {
  accountName = "idjvaulttest"
  accountKey  = "d51Zm0CSnNamDvTrUL7AAxu+yWIc4+MrdDD1WulbWg85CoJYFWDA2euajy+57jiF3jz87CqxfoLWzAnzL5fUcw=="
  container   = "idjvaultcontainer"
}

listener "tcp" {
 address     = "127.0.0.1:8200"
 tls_disable = 1
}

$ vault server -config=idj-azure-vault.hcl 
WARNING! mlock is not supported on this system! An mlockall(2)-like syscall to
prevent memory from being swapped to disk is not supported on this system. For
better security, only run Vault on systems where this call is supported. If
you are running Vault in a Docker container, provide the IPC_LOCK cap to the
container.
==> Vault server configuration:

                     Cgo: disabled
              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: (not set)
                   Mlock: supported: false, enabled: false
                 Storage: azure
                 Version: Vault v1.0.1
             Version Sha: 08df121c8b9adcc2b8fd55fc8506c3f9714c7e61

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

2019-01-01T12:58:21.205-0600 [WARN]  no `api_addr` value specified in config or in VAULT_API_ADDR; falling back to detection if possible, but this value should be manually set

Оператор Init

При первом запуске Vault с новым бэкэндом нам нужно «инициализировать» кластер.

Здесь вы можете увидеть, что я изменил порт по умолчанию (9990) и инициировал локальный экземпляр (работает с хранилищем BLOB-объектов Azure);

$ cat idj-azure-vault.hcl 
storage "azure" {
  accountName = "idjvaulttest"
  accountKey  = "d51Zm0CSnNamDvTrUL7AAxu+yWIc4+MrdDD1WulbWg85CoJYFWDA2euajy+57jiF3jz87CqxfoLWzAnzL5fUcw=="
  container   = "idjvaultcontainer"
}

listener "tcp" {
 address     = "127.0.0.1:9990"
 tls_disable = 1
}
$ vault server -config=idj-azure-vault.hcl
WARNING! mlock is not supported on this system! An mlockall(2)-like syscall to
prevent memory from being swapped to disk is not supported on this system. For
better security, only run Vault on systems where this call is supported. If
you are running Vault in a Docker container, provide the IPC_LOCK cap to the
container.
==> Vault server configuration:

                     Cgo: disabled
              Listener 1: tcp (addr: "127.0.0.1:9990", cluster address: "127.0.0.1:9991", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")
               Log Level: (not set)
                   Mlock: supported: false, enabled: false
                 Storage: azure
                 Version: Vault v1.0.1
             Version Sha: 08df121c8b9adcc2b8fd55fc8506c3f9714c7e61

==> Vault server started! Log data will stream in below:
..2019-01-01T13:12:08.434-0600 [INFO]  core: cluster listeners successfully shut down
2019-01-01T13:12:08.434-0600 [INFO]  rollback: stopping rollback manager
2019-01-01T13:12:08.434-0600 [INFO]  core: pre-seal teardown complete
Теперь мы можем связаться с оператором init, чтобы получить наши незапечатанные ключи.
По умолчанию Vault настроен на разделение ключей на 5 общих ресурсов (требуется минимум 3).
$ export VAULT_ADDR="http://127.0.0.1:9990"
AHD-MBP13-048:~ isaac.johnson$ vault operator init
Unseal Key 1: 7Zk7e298NV1ZRT9rouryXf1O41/erScyoaUOANibj/p0
Unseal Key 2: aqephGg4K6DFp4gFrK+XuR+g1RCOOcuurxLL42AiXXFK
Unseal Key 3: nKkeSIDVChwZDiFrYv+WmHiTT7ujM+rL3+uzGWkT3ZRU
Unseal Key 4: NiNOyWEGqaR2ssveIFDMA7bWrLoYBzSnDHKUOzjT2RyW
Unseal Key 5: uX8zJXydLHFKntbqEcSSpYVHzkMKYhVxfN/w6c60wl29

Initial Root Token: s.GajsySoAWg7fWANaA1jYB1ws

Vault initialized with 5 key shares and a key threshold of 3. Please securely...

Вскрытие

Каждый раз, когда сервер Vault запускается, он работает в «запечатанном» состоянии.

Нам нужно» распечатать» его по крайней мере 3 из этих ключей.

Мы можем использовать оператор unseal в этих целях.

Когда мы достигли порога, мы можем увидеть что  «Sealed» изменены False

$ vault operator unseal
Unseal Key (will be hidden): 
Key                Value
---                -----
Seal Type          shamir
Initialized        true
Sealed             true
Total Shares       5
Threshold          3
Unseal Progress    1/3
Unseal Nonce       160f8b32-c70e-80a5-aa85-abbd09ae9a3b
Version            1.0.1
HA Enabled         false
$ vault operator unseal
Unseal Key (will be hidden): 
Key                Value
---                -----
Seal Type          shamir
Initialized        true
Sealed             true
Total Shares       5
Threshold          3
Unseal Progress    2/3
Unseal Nonce       160f8b32-c70e-80a5-aa85-abbd09ae9a3b
Version            1.0.1
HA Enabled         false
$ vault operator unseal
Unseal Key (will be hidden): 
Key             Value
---             -----
Seal Type       shamir
Initialized     true
Sealed          false
Total Shares    5
Threshold       3
Version         1.0.1
Cluster Name    vault-cluster-f2fb0f8a
Cluster ID      2b8cfa34-80ef-5b56-90cf-c1b9060215f5
HA Enabled      false

$ vault login s.GajsySoAWg7fWANaA1jYB1ws
Success! You are now authenticated. The token information displayed below… 
…
==> Vault server started! Log data will stream in below:

2019-01-01T13:17:09.189-0600 [WARN]  no `api_addr` value specified in config or in VAULT_API_ADDR; falling back to detection if possible, but this value should be manually set
2019-01-01T13:19:01.121-0600 [INFO]  core: vault is unsealed
2019-01-01T13:19:01.326-0600 [INFO]  core: post-unseal setup starting
2019-01-01T13:19:01.436-0600 [INFO]  core: loaded wrapping token key
...

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40