{"id":21650,"date":"2023-01-19T17:12:12","date_gmt":"2023-01-19T16:12:12","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=21650"},"modified":"2025-01-24T10:42:51","modified_gmt":"2025-01-24T09:42:51","slug":"hashicorp-vault-install-and-quick-first-configuration","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/","title":{"rendered":"Hashicorp Vault. Install and quick first configuration"},"content":{"rendered":"\n<p>by Alexandre Nestor<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-introduction\">Introduction<\/h2>\n\n\n\n<p>Keeping and using passwords in scripts is often an overlooked task, at least in the initial stages of development.<br>This behavior poses serious security problems, and quite often, especially in scripts, one can find plaintext passwords.<br>If the project uses Git, then the versions of git that contain the passwords are visible in the project history.<br>The use of a vault should be implemented in the first phase of every project.<\/p>\n\n\n\n<p>This post describes how to install and use the HashiCorp Vault, in a Podman container.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-official-container-vault-image\">Official container vault image:<\/h4>\n\n\n\n<p><a href=\"https:\/\/github.com\/hashicorp\/docker-vault\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/hashicorp\/docker-vault<\/a><br><a href=\"https:\/\/hub.docker.com\/_\/vault\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/hub.docker.com\/_\/vault<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-\"><\/h4>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-installation\">Installation <\/h2>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-install-podman\">Install <a href=\"https:\/\/podman.io\/\">Podman<\/a><\/h4>\n\n\n\n<p>As these tests are made on a brand new cloud Ubuntu vm, let&#8217;s start from the beginning by :<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-installing-podman\">Installing <code>podman<\/code>.<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nroot@blog-vault:~# apt-get install podman\n....\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-create-a-vault-user\">Create a <code>vault<\/code> user.<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nroot@blog-vault:~# useradd vault --home \/home\/vault --create-home --shell \/bin\/bash\nroot@blog-vault:~# sudo su - vault\nvault@blog-vault:~$\n\nroot@blog-vault:~# id vault\nuid=1002(vault) gid=1002(vault) groups=1002(vault)\n\nroot@blog-vault:~# loginctl enable-linger 1002\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-get-the-podman-vault-container\">Get the <code>podman<\/code> vault container:<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nubuntu@blog-vault:~$ podman login registry.connect.redhat.com\nUsername: your_username\nPassword: ********\nLogin Succeeded!\n\nvault@blog-vault:~$ podman pull registry.connect.redhat.com\/hashicorp\/vault:1.12.1-ubi\nTrying to pull registry.connect.redhat.com\/hashicorp\/vault:1.12.1-ubi...\nGetting image source signatures\nCopying blob 4a6625bea753 done\nCopying blob 7c43afe89fe5 done\nCopying blob 66304ec43437 done\nCopying blob 35f159681384 done\nCopying blob baed4ec80d13 done\nCopying blob c4a8cf07892e done\nCopying blob 7ea744a06738 done\nCopying config 11bd373e3f done\nWriting manifest to image destination\nStoring signatures\n11bd373e3fd8c82d9e86c5143572ca79c90962ccc72cb15fab4449790bcdbd35\n\nvault@blog-vault:~$ podman images\nREPOSITORY                                   TAG         IMAGE ID      CREATED       SIZE\nregistry.connect.redhat.com\/hashicorp\/vault  1.12.1-ubi  11bd373e3fd8  2 months ago  350 MB\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-create-the-directories-for-the-vault-container-external-storage\">Create the directories for the vault container external storage.<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$  mkdir -p $HOME\/vault\/logs\nvault@blog-vault:~$  mkdir -p $HOME\/vault\/file\nvault@blog-vault:~$  mkdir -p $HOME\/vault\/config\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-create-the-vault-configuration-file\">Create the vault configuration file.<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$  cat vault\/config\/local.json\n{\n  &quot;storage&quot;: {\n    &quot;file&quot;: {\n      &quot;path&quot;: &quot;\/vault\/file&quot;\n    }\n  },\n  &quot;listener&quot;: &#x5B;\n    {\n      &quot;tcp&quot;: {\n        &quot;address&quot;: &quot;0.0.0.0:8200&quot;,\n        &quot;tls_disable&quot;: true\n      }\n    }\n  ],\n  &quot;default_lease_ttl&quot;: &quot;168h&quot;,\n  &quot;max_lease_ttl&quot;: &quot;720h&quot;,\n  &quot;ui&quot;: true\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-start-the-vault-podman-container\">Start the vault <code>podman<\/code> container<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ podman run --cap-add=IPC_LOCK \\\n-v $HOME\/vault\/logs:\/vault\/logs \\\n-v $HOME\/vault\/config:\/vault\/config \\\n-v $HOME\/vault\/file:\/vault\/file  \\\n-e &#039;SKIP_CHOWN=true&#039; \\\n-e &#039;SKIP_SETCAP=true&#039; \\\n-p 8200:8200 vault server\n\n==&gt; Vault server configuration:\n\n                     Cgo: disabled\n              Go Version: go1.19.2\n              Listener 1: tcp (addr: &quot;0.0.0.0:8200&quot;, cluster address: &quot;0.0.0.0:8201&quot;, max_request_duration: &quot;1m30s&quot;, max_request_size: &quot;33554432&quot;, tls: &quot;disabled&quot;)\n               Log Level: info\n                   Mlock: supported: true, enabled: true\n           Recovery Mode: false\n                 Storage: file\n                 Version: Vault v1.12.1, built 2022-10-27T12:32:05Z\n             Version Sha: e34f8a14fb7a88af4640b09f3ddbb5646b946d9c\n\n==&gt; Vault server started! Log data will stream in below:\n\n2023-01-10T09:22:18.628Z &#x5B;INFO]  proxy environment: http_proxy=&quot;&quot; https_proxy=&quot;&quot; no_proxy=&quot;&quot;\n2023-01-10T09:22:18.628Z &#x5B;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\n2023-01-10T09:22:18.651Z &#x5B;INFO]  core: Initializing version history cache for core\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-configure-the-vault\">Configure the vault<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-first-init-of-the-vault\">First init of the vault<\/h4>\n\n\n\n<p>Let&#8217;s init the vault and save the <code>root_token<\/code> in an env variable for easy use. <\/p>\n\n\n\n<p>Save whole JSON output in a <code>init_vault.json<\/code> file.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$  curl -s --request POST --data &#039;{&quot;secret_shares&quot;: 1, &quot;secret_threshold&quot;: 1}&#039; http:\/\/127.0.0.1:8200\/v1\/sys\/init | jq .\n\n{\n  &quot;keys&quot;: &#x5B;\n    &quot;cc86645102f32c100ddb5239dd231457e4944d55139cc63d9e6eb73b23244f59&quot;\n  ],\n  &quot;keys_base64&quot;: &#x5B;\n    &quot;zIZkUQLzLBAN21I53SMUV+SUTVUTnMY9nm63OyMkT1k=&quot;\n  ],\n  &quot;root_token&quot;: &quot;hvs.lkg7mE8OSF35JjR5va4Q6vwE&quot;\n}\n\nvault@blog-vault:~$  export VAULT_ROOT_TOKEN=&quot;hvs.lkg7mE8OSF35JjR5va4Q6vwE&quot;\nvault@blog-vault:~$  export VAULT_UNSEAL_TOKEN=&quot;zIZkUQLzLBAN21I53SMUV+SUTVUTnMY9nm63OyMkT1k=&quot;\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-unseal-the-vault-using-the-vault-unseal-token-saved-variable\">Unseal the vault using the <code>VAULT_UNSEAL_TOKEN<\/code>  saved variable.<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s --request POST --data &#039;{&quot;key&quot;: &quot;&#039;&quot;$VAULT_UNSEAL_TOKEN&quot;&#039;}&#039; http:\/\/127.0.0.1:8200\/v1\/sys\/unseal | jq .\n{\n&quot;type&quot;: &quot;shamir&quot;,\n&quot;initialized&quot;: true,\n&quot;sealed&quot;: false,\n&quot;t&quot;: 1,\n&quot;n&quot;: 1,\n&quot;progress&quot;: 0,\n&quot;nonce&quot;: &quot;&quot;,\n&quot;version&quot;: &quot;1.12.1&quot;,\n&quot;build_date&quot;: &quot;2022-10-27T12:32:05Z&quot;,\n&quot;migration&quot;: false,\n&quot;cluster_name&quot;: &quot;vault-cluster-fa1e0851&quot;,\n&quot;cluster_id&quot;: &quot;2dbcd016-63e7-82ac-e684-847d6584a508&quot;,\n&quot;recovery_seal&quot;: false,\n&quot;storage_type&quot;: &quot;file&quot;\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-check-the-initialisation-status\">Check the initialisation status:<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s http:\/\/127.0.0.1:8200\/v1\/sys\/init | jq .\n{\n   &quot;initialized&quot;: true\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-enable-the-approle-auth-method\">Enable the <code>AppRole<\/code> auth method.<\/h4>\n\n\n\n<p>More on this <code>AppRole<\/code> authentification method: <a href=\"https:\/\/developer.hashicorp.com\/vault\/docs\/auth\/approle\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/developer.hashicorp.com\/vault\/docs\/auth\/approle<\/a><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s \\\n--header &quot;X-Vault-Token: $VAULT_ROOT_TOKEN&quot; \\\n--request POST \\\n--data &#039;{&quot;type&quot;: &quot;approle&quot;}&#039; \\\nhttp:\/\/127.0.0.1:8200\/v1\/sys\/auth\/approle\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-nbsp-get-the-approle-information\">&nbsp;Get the <code>AppRole<\/code> information<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s \\\n--header &quot;X-Vault-Token: $VAULT_ROOT_TOKEN&quot; \\\n--request GET \\\nhttp:\/\/127.0.0.1:8200\/v1\/sys\/auth\/approle | jq .\n\n{\n    &quot;options&quot;: {},\n    &quot;plugin_version&quot;: &quot;&quot;,\n    &quot;running_plugin_version&quot;: &quot;v1.12.1+builtin.vault&quot;,\n    &quot;running_sha256&quot;: &quot;&quot;,\n    &quot;type&quot;: &quot;approle&quot;,\n    &quot;description&quot;: &quot;&quot;,\n    &quot;external_entropy_access&quot;: false,\n    &quot;uuid&quot;: &quot;f8c3835f-f6d0-cfab-34a0-6337aa3267a5&quot;,\n    &quot;deprecation_status&quot;: &quot;supported&quot;,\n    &quot;config&quot;: {\n        &quot;default_lease_ttl&quot;: 0,\n        &quot;force_no_cache&quot;: false,\n        &quot;max_lease_ttl&quot;: 0,\n        &quot;token_type&quot;: &quot;default-service&quot;\n    },\n    &quot;accessor&quot;: &quot;auth_approle_f341e77c&quot;,\n    &quot;local&quot;: false,\n    &quot;seal_wrap&quot;: false,\n    &quot;request_id&quot;: &quot;16755bed-2c14-f0ae-8dd4-5e4d16b530ae&quot;,\n    &quot;lease_id&quot;: &quot;&quot;,\n    &quot;renewable&quot;: false,\n    &quot;lease_duration&quot;: 0,\n    &quot;data&quot;: {\n        &quot;accessor&quot;: &quot;auth_approle_f341e77c&quot;,\n        &quot;config&quot;: {\n            &quot;default_lease_ttl&quot;: 0,\n            &quot;force_no_cache&quot;: false,\n            &quot;max_lease_ttl&quot;: 0,\n            &quot;token_type&quot;: &quot;default-service&quot;\n            },\n        &quot;deprecation_status&quot;: &quot;supported&quot;,\n        &quot;description&quot;: &quot;&quot;,\n        &quot;external_entropy_access&quot;: false,\n        &quot;local&quot;: false,\n        &quot;options&quot;: {},\n        &quot;plugin_version&quot;: &quot;&quot;,\n        &quot;running_plugin_version&quot;: &quot;v1.12.1+builtin.vault&quot;,\n        &quot;running_sha256&quot;: &quot;&quot;,\n        &quot;seal_wrap&quot;: false,\n        &quot;type&quot;: &quot;approle&quot;,\n        &quot;uuid&quot;: &quot;f8c3835f-f6d0-cfab-34a0-6337aa3267a5&quot;\n    },\n    &quot;wrap_info&quot;: null,\n    &quot;warnings&quot;: null,\n    &quot;auth&quot;: null\n}\n<\/pre><\/div>\n\n\n<p>At this moment the vault is configured and the AppRole authentification method is activated.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-configure-the-vault-for-user-api-usage\">Configure the vault for user API usage <\/h2>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-create-a-policy\">Create a policy <\/h4>\n\n\n\n<p>Create the policy <code>oci_policy<\/code> with the rights  <code>read\/update\/create<\/code> on the vault secret path.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s \\\n--header &quot;X-Vault-Token: $VAULT_ROOT_TOKEN&quot; \\\n--request PUT \\\n--data &#039;{&quot;policy&quot;:&quot;\\npath \\&quot;secret\/data\/\\&quot; {\\n capabilities = &#x5B;\\&quot;create\\&quot;, \\&quot;update\\&quot;, \\&quot;read\\&quot; ]\\n}\\n\\npath \\&quot;secret\/data\/oci\/\\&quot; {\\n capabilities = &#x5B;\\&quot;create\\&quot;, \\&quot;update\\&quot;, \\&quot;read\\&quot; ]\\n}\\n&quot;}&#039; \\\nhttp:\/\/127.0.0.1:8200\/v1\/sys\/policies\/acl\/oci_policy\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-get-the-create-policy-information\">Get the create policy information<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s \\\n--header &quot;X-Vault-Token: $VAULT_ROOT_TOKEN&quot; \\\n--request GET \\\nhttp:\/\/127.0.0.1:8200\/v1\/sys\/policies\/acl\/oci_policy | jq .\n{\n  &quot;request_id&quot;: &quot;5ecd0b6d-1034-908d-3146-322ee531a6ea&quot;,\n  &quot;lease_id&quot;: &quot;&quot;,\n  &quot;renewable&quot;: false,\n  &quot;lease_duration&quot;: 0,\n  &quot;data&quot;: {\n    &quot;name&quot;: &quot;oci_policy&quot;,\n    &quot;policy&quot;: &quot;\\npath \\&quot;secret\/data\/\\&quot; {\\n capabilities = &#x5B;\\&quot;create\\&quot;, \\&quot;update\\&quot;, \\&quot;read\\&quot; ]\\n}\\n\\npath \\&quot;secret\/data\/oci\/\\&quot; {\\n capabilities = &#x5B;\\&quot;read\\&quot;]\\n}\\n&quot;\n  },\n  &quot;wrap_info&quot;: null,\n  &quot;warnings&quot;: null,\n&quot;auth&quot;: null\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-enable-kv-v2-secrets-engine-at-secret\">Enable KV v2 secrets engine at secret<\/h4>\n\n\n\n<p>The KV secret engine is used to store arbitrary secrets. <\/p>\n\n\n\n<p>We use the version 2, as this is the last one at this moment<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s \\\n--header &quot;X-Vault-Token: $VAULT_ROOT_TOKEN&quot; \\\n--request POST \\\n--data &#039;{ &quot;type&quot;:&quot;kv-v2&quot; }&#039; \\\nhttp:\/\/127.0.0.1:8200\/v1\/sys\/mounts\/secret\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-associate-the-created-policy-with-a-role-oci-role\">Associate the created policy with a role (<code>oci_role<\/code>)<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s \\\n--header &quot;X-Vault-Token: $VAULT_ROOT_TOKEN&quot; \\\n--request POST \\\n--data &#039;{&quot;policies&quot;: &#x5B;&quot;oci_policy&quot;]}&#039; \\\nhttp:\/\/127.0.0.1:8200\/v1\/auth\/approle\/role\/oci_role\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-get-oci-role-id\">Get <code>oci_role<\/code> id<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s \\\n--header &quot;X-Vault-Token: $VAULT_ROOT_TOKEN&quot; \\\nhttp:\/\/127.0.0.1:8200\/v1\/auth\/approle\/role\/oci_role\/role-id | jq -r &quot;.data&quot;\n{\n&quot;role_id&quot;: &quot;68c22d2b-adf0-2f88-ec07-d7c495c51e30&quot;\n}\n\n#\u00a0save this value\n\nvault@blog-vault:~$ export VAULT_ROLE_ID=&quot;68c22d2b-adf0-2f88-ec07-d7c495c51e30&quot;\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-creates-a-new-secretid-using-the-oci-role\">Creates a new SecretID using the <code>oci_role<\/code><\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s \\\n--header &quot;X-Vault-Token: $VAULT_ROOT_TOKEN&quot; \\\n--request POST \\\nhttp:\/\/127.0.0.1:8200\/v1\/auth\/approle\/role\/oci_role\/secret-id | jq -r &quot;.data&quot;\n{\n  &quot;secret_id&quot;: &quot;d7602ddb-a2db-8e1d-47e3-4ee57e0a9140&quot;,\n  &quot;secret_id_accessor&quot;: &quot;dd56e8ea-8207-88c8-6c1d-9ff6b1e2ab54&quot;,\n  &quot;secret_id_num_uses&quot;: 0,\n  &quot;secret_id_ttl&quot;: 0\n}\n\n# save the secret_id value\nvault@blog-vault:~$ export VAULT_SECRET_ID=&quot;d7602ddb-a2db-8e1d-47e3-4ee57e0a9140&quot;\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-call-the-login-endpoint-to-fetch-a-new-vault-token\">Call the login endpoint to fetch a new Vault token.<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s --request POST --data &#039;{&quot;role_id&quot;: &quot;&#039;&quot;$VAULT_ROLE_ID&quot;&#039;&quot;, &quot;secret_id&quot;:&quot;&#039;&quot;$VAULT_SECRET_ID&quot;&#039;&quot;}&#039; http:\/\/127.0.0.1:8200\/v1\/auth\/approle\/login | jq -r &quot;.auth&quot;\n{\n  &quot;client_token&quot;: &quot;hvs.CAESIDvS7Q9FG9tt_PWCFls0ya-vZzR9RwwmC4vT63fqZe0_Gh4KHGh2cy5RM0ZDeUpNM2VwbU51Qm9RVXo1ZGk4ZVQ&quot;,\n  &quot;accessor&quot;: &quot;2wXPJf3Irw245R6jXaNmR60a&quot;,\n  &quot;policies&quot;: &#x5B;\n    &quot;default&quot;,\n    &quot;oci_policy&quot;\n  ],\n  &quot;token_policies&quot;: &#x5B;\n    &quot;default&quot;,\n    &quot;oci_policy&quot;\n  ],\n  &quot;metadata&quot;: {\n    &quot;role_name&quot;: &quot;oci_role&quot;\n  },\n  &quot;lease_duration&quot;: 604800,\n  &quot;renewable&quot;: true,\n  &quot;entity_id&quot;: &quot;dfb3bb81-6d8a-0fbb-1f7f-ce4c29e98019&quot;,\n  &quot;token_type&quot;: &quot;service&quot;,\n  &quot;orphan&quot;: true,\n  &quot;mfa_requirement&quot;: null,\n  &quot;num_uses&quot;: 0\n}\n\n# save the client token id \n\nvault@blog-vault:~$ export VAULT_CLIENT_TOKEN=&quot;vs.CAESIDvS7Q9FG9tt_PWCFls0ya-vZzR9RwwmC4vT63fqZe0_Gh4KHGh2cy5RM0ZDeUpNM2VwbU51Qm9RVXo1ZGk4ZVQ&quot;\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-create-a-version-1-of-a-secret-with-a-password\">Create a version 1 of a secret with a password <\/h4>\n\n\n\n<p>Create the the key named <code>password<\/code> and the valus  <code>my_long_password<\/code> <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s \\\n--header &quot;X-Vault-Token: $VAULT_CLIENT_TOKEN&quot; \\\n--request POST \\\n--data &#039;{ &quot;data&quot;: {&quot;password&quot;: &quot;my-long-password&quot;} }&#039; \\\nhttp:\/\/127.0.0.1:8200\/v1\/secret\/data\/oci | jq -r &quot;.data&quot;\n\n{\n  &quot;created_time&quot;: &quot;2023-01-19T14:02:27.075843452Z&quot;,\n  &quot;custom_metadata&quot;: null,\n  &quot;deletion_time&quot;: &quot;&quot;,\n  &quot;destroyed&quot;: false,\n  &quot;version&quot;: 1\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-get-the-password\">Get the password<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s \\\n--header &quot;X-Vault-Token: $VAULT_CLIENT_TOKEN&quot; \\\n--request GET \\\nhttp:\/\/127.0.0.1:8200\/v1\/secret\/data\/oci | jq -r &quot;.data.data&quot;\n\n{\n  &quot;password&quot;: &quot;my-long-password&quot;\n}\n<\/pre><\/div>\n\n\n<p>At this moment we are able to get a stored pair <code>key:value <\/code> using the fetched <code>$VAULT_CLIENT_TOKEN<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-restart-everything\">Restart everything<\/h2>\n\n\n\n<p>Restart the vault container to validate the retention of the vault.<\/p>\n\n\n\n<p>Pay attention to shutdown traces: when the shutdown is triggered the vault is sealed<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ ==&gt; Vault shutdown triggered\n2023-01-19T14:05:42.570Z &#x5B;INFO] core: marked as sealed\n2023-01-19T14:05:42.570Z &#x5B;INFO] core: pre-seal teardown starting\n2023-01-19T14:05:42.570Z &#x5B;INFO] rollback: stopping rollback manager\n2023-01-19T14:05:42.570Z &#x5B;INFO] core: pre-seal teardown complete\n2023-01-19T14:05:42.570Z &#x5B;INFO] core: stopping cluster listeners\n2023-01-19T14:05:42.570Z &#x5B;INFO] core.cluster-listener: forwarding rpc listeners stopped\n2023-01-19T14:05:42.609Z &#x5B;INFO] core.cluster-listener: rpc listeners successfully shut down\n2023-01-19T14:05:42.609Z &#x5B;INFO] core: cluster listeners successfully shut down\n2023-01-19T14:05:42.610Z &#x5B;INFO] core: vault is sealed\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-restart-the-podman-container\">Restart the <code>podman<\/code> container<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ podman run --cap-add=IPC_LOCK -v $HOME\/vault\/logs:\/vault\/logs -v $HOME\/vault\/config:\/vault\/config -v $HOME\/vault\/file:\/vault\/file -e &#039;SKIP_CHOWN=true&#039; -e &#039;SKIP_SETCAP=true&#039; -p 8200:8200 vault server\n==&gt; Vault server configuration:\n     \n            Cgo: disabled\n          Go Version: go1.19.2\n          Listener 1: tcp (addr: &quot;0.0.0.0:8200&quot;, cluster address: &quot;0.0.0.0:8201&quot;, max_request_duration: &quot;1m30s&quot;, max_request_size: &quot;33554432&quot;, tls: &quot;disabled&quot;)\n           Log Level: info\n               Mlock: supported: true, enabled: true\n       Recovery Mode: false\n             Storage: file\n             Version: Vault v1.12.1, built 2022-10-27T12:32:05Z\n         Version Sha: e34f8a14fb7a88af4640b09f3ddbb5646b946d9c\n==&gt; Vault server started! Log data will stream in below:\n\n2023-01-19T14:06:04.376Z &#x5B;INFO] proxy environment: http_proxy=&quot;&quot; https_proxy=&quot;&quot; no_proxy=&quot;&quot;\n2023-01-19T14:06:04.377Z &#x5B;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\n2023-01-19T14:06:04.398Z &#x5B;INFO] core: Initializing version history cache for core\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-let-s-save-some-variables\">Let&#8217;s save some variables<\/h4>\n\n\n\n<p>For the values of these variable see the initial configuration of the vault<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ export VAULT_ROLE_ID=&quot;68c22d2b-adf0-2f88-ec07-d7c495c51e30&quot;\nvault@blog-vault:~$ export VAULT_SECRET_ID=&quot;d7602ddb-a2db-8e1d-47e3-4ee57e0a9140&quot;\nvault@blog-vault:~$ export VAULT_UNSEAL_TOKEN=&quot;zIZkUQLzLBAN21I53SMUV+SUTVUTnMY9nm63OyMkT1k=&quot;\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-check-the-vault-status\">Check the vault status<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s http:\/\/127.0.0.1:8200\/v1\/sys\/init | jq .\n{\n  &quot;initialized&quot;: true\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-unseal-the-vault\">Unseal the vault<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s --request POST --data &#039;{&quot;key&quot;: &quot;&#039;&quot;$VAULT_UNSEAL_TOKEN&quot;&#039;&quot;}&#039; http:\/\/127.0.0.1:8200\/v1\/sys\/unseal | jq .\n{\n  &quot;type&quot;: &quot;shamir&quot;,\n  &quot;initialized&quot;: true,\n  &quot;sealed&quot;: false,\n  &quot;t&quot;: 1,\n  &quot;n&quot;: 1,\n  &quot;progress&quot;: 0,\n  &quot;nonce&quot;: &quot;&quot;,\n  &quot;version&quot;: &quot;1.12.1&quot;,\n  &quot;build_date&quot;: &quot;2022-10-27T12:32:05Z&quot;,\n  &quot;migration&quot;: false,\n  &quot;cluster_name&quot;: &quot;vault-cluster-3e0948ec&quot;,\n  &quot;cluster_id&quot;: &quot;1eb1ee65-f32c-7cf3-a5ec-7975e1f9240a&quot;,\n  &quot;recovery_seal&quot;: false,\n  &quot;storage_type&quot;: &quot;file&quot;\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-get-the-client-token\">Get the client token<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ export VAULT_CLIENT_TOKEN=$(curl -s --request POST --data &#039;{&quot;role_id&quot;: &quot;&#039;&quot;$VAULT_ROLE_ID&quot;&#039;&quot;, &quot;secret_id&quot;:&quot;&#039;&quot;$VAULT_SECRET_ID&quot;&#039;&quot;}&#039; http:\/\/127.0.0.1:8200\/v1\/auth\/approle\/login | jq -r &quot;.auth.client_token&quot;)\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-finally-fetch-the-password\">Finally fetch the password<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ export MY_PASSWORD=$(curl -s --header &quot;X-Vault-Token: $VAULT_CLIENT_TOKEN&quot; --request GET http:\/\/127.0.0.1:8200\/v1\/secret\/data\/oci | jq -r &quot;.data.data.password&quot;)\n\nvault@blog-vault:~$ echo $MY_PASSWORD\nmy-long-password\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-get-some-help\">Get some help<\/h3>\n\n\n\n<p>All API endpoints can receive the <code>?help=1<\/code> parameter to output the end-point help.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nvault@blog-vault:~$ curl -s --header &quot;X-Vault-Token:$VAUL_ROOT_TOKEN&quot; http:\/\/127.0.0.1:8200\/v1\/secret?help=1 | jq .\n{\n&quot;help&quot;: &quot;Request: config\\nMatching Route: ^config$\\n\\nConfigures settings for the KV store\\n\\n## PARAMETERS\\n\\n cas_required (bool)\\n\\n If true, the backend will require the cas parameter to be set for each write\\n\\n delete_version_after (duration (sec))\\n\\n \n\u2026.\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p>Installing and using the Vault is quick and easy. Dealing with the problem of storing and using passwords later in a project is much more complicated and difficult to implement.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-happy-scripting\">Happy scripting<\/h2>\n","protected":false},"excerpt":{"rendered":"<p>by Alexandre Nestor Introduction Keeping and using passwords in scripts is often an overlooked task, at least in the initial stages of development.This behavior poses serious security problems, and quite often, especially in scripts, one can find plaintext passwords.If the project uses Git, then the versions of git that contain the passwords are visible in [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[955,368,1320,1504,42],"tags":[135,601,2814,89,1646],"type_dbi":[],"class_list":["post-21650","post","type-post","status-publish","format-standard","hentry","category-cloud","category-development-performance","category-devops","category-docker","category-operating-systems","tag-cloud","tag-docker","tag-hashicorpvault","tag-kubernetes","tag-podman"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Hashicorp Vault. Install and quick first configuration - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hashicorp Vault. Install and quick first configuration\" \/>\n<meta property=\"og:description\" content=\"by Alexandre Nestor Introduction Keeping and using passwords in scripts is often an overlooked task, at least in the initial stages of development.This behavior poses serious security problems, and quite often, especially in scripts, one can find plaintext passwords.If the project uses Git, then the versions of git that contain the passwords are visible in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-19T16:12:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-24T09:42:51+00:00\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/hashicorp-vault-install-and-quick-first-configuration\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/hashicorp-vault-install-and-quick-first-configuration\\\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Hashicorp Vault. Install and quick first configuration\",\"datePublished\":\"2023-01-19T16:12:12+00:00\",\"dateModified\":\"2025-01-24T09:42:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/hashicorp-vault-install-and-quick-first-configuration\\\/\"},\"wordCount\":461,\"commentCount\":0,\"keywords\":[\"Cloud\",\"Docker\",\"HashicorpVault\",\"kubernetes\",\"podman\"],\"articleSection\":[\"Cloud\",\"Development &amp; Performance\",\"DevOps\",\"Docker\",\"Operating systems\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/hashicorp-vault-install-and-quick-first-configuration\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/hashicorp-vault-install-and-quick-first-configuration\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/hashicorp-vault-install-and-quick-first-configuration\\\/\",\"name\":\"Hashicorp Vault. Install and quick first configuration - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2023-01-19T16:12:12+00:00\",\"dateModified\":\"2025-01-24T09:42:51+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/hashicorp-vault-install-and-quick-first-configuration\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/hashicorp-vault-install-and-quick-first-configuration\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/hashicorp-vault-install-and-quick-first-configuration\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hashicorp Vault. Install and quick first configuration\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/oracle-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hashicorp Vault. Install and quick first configuration - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/","og_locale":"en_US","og_type":"article","og_title":"Hashicorp Vault. Install and quick first configuration","og_description":"by Alexandre Nestor Introduction Keeping and using passwords in scripts is often an overlooked task, at least in the initial stages of development.This behavior poses serious security problems, and quite often, especially in scripts, one can find plaintext passwords.If the project uses Git, then the versions of git that contain the passwords are visible in [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/","og_site_name":"dbi Blog","article_published_time":"2023-01-19T16:12:12+00:00","article_modified_time":"2025-01-24T09:42:51+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Hashicorp Vault. Install and quick first configuration","datePublished":"2023-01-19T16:12:12+00:00","dateModified":"2025-01-24T09:42:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/"},"wordCount":461,"commentCount":0,"keywords":["Cloud","Docker","HashicorpVault","kubernetes","podman"],"articleSection":["Cloud","Development &amp; Performance","DevOps","Docker","Operating systems"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/","url":"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/","name":"Hashicorp Vault. Install and quick first configuration - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2023-01-19T16:12:12+00:00","dateModified":"2025-01-24T09:42:51+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/hashicorp-vault-install-and-quick-first-configuration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hashicorp Vault. Install and quick first configuration"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/21650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=21650"}],"version-history":[{"count":20,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/21650\/revisions"}],"predecessor-version":[{"id":36876,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/21650\/revisions\/36876"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=21650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=21650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=21650"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=21650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}