檢視 Vault/Install 的原始碼
←
Vault/Install
跳至導覽
跳至搜尋
由於以下原因,您無權編輯此頁面:
您請求的操作只有這個群組的使用者能使用:
使用者
您可以檢視並複製此頁面的原始碼。
'''Vault/Install'''將介紹[[Vault]]的安裝與設定。 == 安裝 == Vault是單執行檔,建議安裝的路徑是<code>/usr/local/bin/vault</code>,這點沒有在官方的文件裡提到,但官方的範例常使用這個路徑<ref name="ops-deployment-guide">{{Cite web |url=https://learn.hashicorp.com/vault/day-one/ops-deployment-guide |title=Vault Deployment Guide |accessdate=2020-07-15 |language=en}}</ref>。 以Linux版的例子來說: <syntaxhighlight lang="bash"> cd /tmp; wget -c https://releases.hashicorp.com/vault/1.4.3/vault_1.4.3_linux_amd64.zip; unzip vault_1.4.3_linux_amd64.zip; sudo cp vault /usr/local/bin/vault; sudo chmod 755 /usr/local/bin/vault </syntaxhighlight> == 設定KMS、DynamoDB與IAM == === DynamoDB === 建立一個表格(這邊叫<code>vault</code>),依照官方的設計: * Primary partition key設為<code>Path</code>(string)。 * Primary sort key設為<code>Key</code>(string)。 量很少時可以考慮使用on-demand模式按照讀寫的量計費,而非以保證讀寫的容量計費。 === KMS === 使用<code>SYMMETRIC_DEFAULT</code>建立即可。 === IAM === 建立使用者並且產生對應的AWS key(<code>access_key</code>與<code>secret_key</code>)。 接著掛入對應的Inline Policy <code>Policy-Vault-DynamoDB</code>,需要修改帳戶編號(這邊是<code>123456789012</code>)與DynamoDB的表格名稱部份(這邊是<code>vault</code>): <syntaxhighlight lang="json"> { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", "dynamodb:PutItem", "dynamodb:DescribeTable", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:Scan", "dynamodb:ListTagsOfResource", "dynamodb:Query", "dynamodb:UpdateItem", "dynamodb:DescribeTimeToLive", "dynamodb:GetRecords" ], "Resource": [ "arn:aws:dynamodb:ap-southeast-1:123456789012:table/vault/stream/*", "arn:aws:dynamodb:ap-southeast-1:123456789012:table/vault/index/*", "arn:aws:dynamodb:ap-southeast-1:123456789012:table/vault" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "dynamodb:DescribeReservedCapacityOfferings", "dynamodb:ListTables", "dynamodb:DescribeReservedCapacity", "dynamodb:DescribeLimits" ], "Resource": "*" } ] } </syntaxhighlight> 以及<code>Policy-Vault-KMS</code>,需要修改帳戶編號(這邊是<code>123456789012</code>)與KMS的Key ID部份(UUID格式,這邊是<code>01234567-89ab-cdef-0123-456789abcdef</code>): <syntaxhighlight lang="json"> { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:DescribeKey" ], "Resource": "arn:aws:kms:ap-southeast-1:123456789012:key/01234567-89ab-cdef-0123-456789abcdef" } ] } </syntaxhighlight> == 建立系統的使用者 == 建立<code>vault</code>使用者: <syntaxhighlight lang="bash"> sudo groupadd -r vault; sudo useradd -g vault -r vault </syntaxhighlight> == 設定vault.hcl == 先建立對應的路徑: <syntaxhighlight lang="bash"> sudo mkdir /etc/vault.d; sudo touch /etc/vault.d/vault.hcl; sudo chown vault:vault /etc/vault.d/vault.hcl; sudo chmod 600 /etc/vault.d/vault.hcl </syntaxhighlight> Vault的設定檔建議的路徑是<code>/etc/vault.d/vault.hcl</code>,這點沒有在官方的文件裡提到,但官方的範例常使用這個路徑<ref name="ops-deployment-guide"/>。需要修改自己的網路位置(這邊使用<code>10.10.10.10</code>)。 <syntaxhighlight lang="nginx"> api_addr = "http://10.10.10.10:8200" cluster_addr = "http://10.10.10.10:8201" log_level = "Info" ui = true listener "tcp" { address = "0.0.0.0:8200" cluster_address = "10.10.10.10:8201" tls_disable = "true" } seal "awskms" { region = "ap-southeast-1" access_key = "x" secret_key = "x" kms_key_id = "x" } storage "dynamodb" { ha_enabled = "true" region = "ap-southeast-1" table = "vault" access_key = "x" secret_key = "x" } </syntaxhighlight> 如果是把機器放在AWS內部的話,可以用EC2 Role的方式,就不需要在設定檔內指定<code>access_key</code>與<code>secret_key</code>,Vault會自己去內部網路的<code>169.254.169.254</code>裡抓EC2 Role提供的權限。 == 設定systemd相關設定 == 放到<code>/lib/systemd/system/vault.service</code>: <syntaxhighlight lang="ini"> [Unit] Description="HashiCorp Vault - A tool for managing secrets" Documentation=https://www.vaultproject.io/docs/ Requires=network-online.target After=network-online.target ConditionFileNotEmpty=/etc/vault.d/vault.hcl StartLimitIntervalSec=60 StartLimitBurst=3 [Service] User=vault Group=vault ProtectSystem=full ProtectHome=read-only PrivateTmp=yes PrivateDevices=yes SecureBits=keep-caps AmbientCapabilities=CAP_IPC_LOCK Capabilities=CAP_IPC_LOCK+ep CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK NoNewPrivileges=yes ExecStart=/usr/local/bin/vault server -config=/etc/vault.d/vault.hcl ExecReload=/bin/kill --signal HUP $MAINPID KillMode=process KillSignal=SIGINT Restart=on-failure RestartSec=5 TimeoutStopSec=30 StartLimitInterval=60 StartLimitIntervalSec=60 StartLimitBurst=3 LimitNOFILE=65536 LimitMEMLOCK=infinity [Install] WantedBy=multi-user.target </syntaxhighlight> 然後設定開機啟動,並且馬上啟動: <syntaxhighlight lang="bash"> sudo systemctl daemon-reload; sudo systemctl enable vault; sudo service vault start </syntaxhighlight> == 初始化 == 第一次執行時需要初始化,在其中一台機器執行: <syntaxhighlight lang="bash"> vault operator init -recovery-shares=1 -recovery-threshold=1 -address=http://127.0.0.1:8200 </syntaxhighlight> 這邊會產生root token讓使用者操作。 == 設定ELB == 這邊建議用ALB: * 使用ACM管理HTTPS所需要的憑證。 * 使用<code>/v1/sys/health</code>的狀態設定health check,只有active node會傳回200<ref>{{Cite web |url=https://www.vaultproject.io/api/system/health.html |title=/sys/health - HTTP API |accessdate=2020-07-17 |language=en}}</ref>。 == 檢修 == 把<code>vault.hcl</code>內的<code>log_level</code>改為<code>Debug</code>後,可以在<code>/var/log/syslog</code>看到不少資訊。 == 參考文獻 == {{Reflist|2}} == 相關連結 == * [[Vault]] == 外部連結 == * {{Official|https://www.vaultproject.io/}} {{en}} [[Category:軟體]]
此頁面使用了以下模板:
Template:Cite web
(
檢視原始碼
)
Template:Column-count
(
檢視原始碼
)
Template:Reflist
(
檢視原始碼
)
Module:Citation/CS1
(
檢視原始碼
)
Module:Citation/CS1/Configuration
(
檢視原始碼
)
Module:Citation/CS1/Date validation
(
檢視原始碼
)
Module:Citation/CS1/Whitelist
(
檢視原始碼
)
返回到「
Vault/Install
」。
導覽選單
個人工具
登入
命名空間
頁面
討論
臺灣正體
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
視圖
閱讀
檢視原始碼
檢視歷史
更多
搜尋
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊