檢視 Vault/Install 的原始碼
←
Vault/Install
跳至導覽
跳至搜尋
由於以下原因,您無權編輯此頁面:
您請求的操作只有這個群組的使用者能使用:
使用者
您可以檢視並複製此頁面的原始碼。
'''Vault/Install'''將介紹[[Vault]]的安裝與設定。 == 簡介 == 這邊提供的方式是希望在[[AWS]]上面架設HA架構的Vault服務。 * 兩台[[EC2]]主機執行Vault服務。 * 前端可以使用[[ELB]]或是利用[[Route 53]]提供HA界面。 * 後端部份使用[[KMS]]加密(即「Seal」),並且透過KMS在啟動時自動解封(Auto-Unseal)。 * 儲存部份使用[[DynamoDB]](即「Storage」)。 == 安裝 == 如果是在minimal的環境裡面,你會需要先裝一些基本的東西(通常是用root執行這串指令): <syntaxhighlight lang="bash"> apt install -y curl gnupg software-properties-common sudo </syntaxhighlight> 然後再安裝Vault: <syntaxhighlight lang="bash"> curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -; sudo apt-add-repository "deb https://apt.releases.hashicorp.com $(lsb_release -cs) main"; sudo apt update && sudo apt install vault </syntaxhighlight> == 設定KMS、DynamoDB與IAM == 這邊是以[[AWS]]環境下設計的模式。 === 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>),或是使用EC2的Role來提供權限。 接著掛入對應的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> == 設定vault.hcl == 先把原來系統安裝的vault.hcl備份起來: <syntaxhighlight lang="bash"> sudo cp /etc/vault.d/vault.hcl /etc/vault.d/vault.hcl.bak </syntaxhighlight> 然後把自己的設定放進去,下面的設定裡需要修改自己的網路位置(這邊使用<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提供的權限。 然後重跑vault: <syntaxhighlight lang="bash"> sudo service vault restart </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]] [[Category:Vault]]
此頁面使用了以下模板:
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說明
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊