From fb077eaf41e3af03fe1c3c3f06fde2f269821382 Mon Sep 17 00:00:00 2001 From: Adam Overa Date: Thu, 1 May 2025 13:26:19 -0400 Subject: [PATCH 1/8] OpenBao LKE Migration Guides --- .../image1.png | Bin 0 -> 44577 bytes .../index.md | 235 ++++++++++++++++ .../image1.png | Bin 0 -> 71939 bytes .../image2.png | Bin 0 -> 73183 bytes .../image3.png | Bin 0 -> 90740 bytes .../index.md | 238 +++++++++++++++++ .../image1.png | Bin 0 -> 114977 bytes .../image2.png | Bin 0 -> 69783 bytes .../index.md | 237 +++++++++++++++++ .../image1.png | Bin 0 -> 285923 bytes .../image2.png | Bin 0 -> 300260 bytes .../index.md | 250 ++++++++++++++++++ 12 files changed, 960 insertions(+) create mode 100644 docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/image1.png create mode 100644 docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md create mode 100644 docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image1.png create mode 100644 docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image2.png create mode 100644 docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image3.png create mode 100644 docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md create mode 100644 docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/image1.png create mode 100644 docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/image2.png create mode 100644 docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md create mode 100644 docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/image1.png create mode 100644 docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/image2.png create mode 100644 docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md diff --git a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/image1.png b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..52f05be3959351ae4dc094f45638b57f0b590d25 GIT binary patch literal 44577 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 secret\_id\_num\_uses 0 secret\_id\_ttl 0s token\_bound\_cidrs \[\] token\_explicit\_max\_ttl 0s token\_max\_ttl 0s token\_no\_default\_policy false token\_num\_uses 0 token\_period 0s token\_policies \[db-secrets-policy\] token\_strictly\_bind\_ip false token\_ttl 0s token\_type default | +| :---- | + +Fetch the AppRole ID with the following command: + +| $ bao read auth/approle/role/web-app-approle/role-id Key Value \--- \----- role\_id 1d41b8be-03d2-6f61-702d-1731c957fd13 | +| :---- | + +#### Step \#4: Generate secret ID + +Generate a secret ID for the role: + +| $ bao write \-f auth/approle/role/web-app-approle/secret-id Key Value \--- \----- secret\_id 4eb6e604-681c-3fc3-bedd-a2dc774955bb secret\_id\_accessor fe899dc6-85f7-f596-fb93-3c961f7919a9 secret\_id\_num\_uses 0 secret\_id\_ttl 0s | +| :---- | + +#### Step \#5: Generate API token + +Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. + +| $ bao write auth/approle/login \\ role\_id="1d41b8be-03d2-6f61-702d-1731c957fd13" \\ secret\_id="4eb6e604-681c-3fc3-bedd-a2dc774955bb" Key Value \--- \----- token s.kpKsgWNtYLAktRYQT4BiMVMy token\_accessor Rwlq5EmvrHC8VvvHwoRyJzUh token\_duration 768h token\_renewable true token\_policies \["db-secrets-policy" "default"\] identity\_policies \[\] policies \["db-secrets-policy" "default"\] token\_meta\_role\_name web-app-approle | +| :---- | + +The AppRole token (s.kpKsgWNtYLAktRYQT4BiMVMy in the previous example) can be used by a user, machine, or service—such a web application—to authenticate OpenBao API calls, giving the caller authorization to read the database credential secret. + +### Store the secret + +Create the secret store that is defined in the policy. For this example, all secrets will be stored under the database-credentials path. Run the following command: + +| $ bao secrets enable \--path=database-credentials kv Success\! Enabled the kv secrets engine at: database-credentials/ | +| :---- | + +The database secret stored at AWS Secrets Manager had the following form: + +| { "username": "psqluser", "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs\!m$TudDxEe\#", "engine": "postgres", "host": "psql.example-cloud.com", "port": "5432", "dbname": "web\_app\_production" } | +| :---- | + +To store these key-value pairs in OpenBao underneath the database-credentials path as a secret named psql, run the following command: + +| $ bao kv put \--mount=database-credentials psql \\ "username"="psqluser" \\ "password"="W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#" \\ "engine"="postgres" \\ "host"="psql.example-cloud.com" \\ "port"="5432" \\ "dbname"="web\_app\_production" Success\! Data written to: database-credentials/psql | +| :---- | + +### Retrieve the secret + +To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: + +| $ bao kv get \--mount=database-credentials psql \====== Data \====== Key Value \--- \----- dbname web\_app\_production engine postgres host psql.example-cloud.com password W0H@Z52IGI0VjqoGS3xMkJ9SO533w.vault-tokenTudDxEe\# port 5432 username psqluser | +| :---- | + +Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: + +| $ curl \--header "X-Vault-Token: s.kpKsgWNtYLAktRYQT4BiMVMy" \\ \--request GET \\ $BAO\_ADDR/v1/database-credentials/psql \\ | jq { "request\_id": "00237a0b-4349-351d-50a0-ef127534ed18", "lease\_id": "", "renewable": false, "lease\_duration": 2764800, "data": { "dbname": "web\_app\_production", "engine": "postgres", "host": "psql.example-cloud.com", "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w.vault-tokenTudDxEe\#", "port": "5432", "username": "psqluser" }, "wrap\_info": null, "warnings": null, "auth": null } | +| :---- | + +This API token can be used in applications and services to access the database credentials. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: + +* [Go](https://github.com/hashicorp/vault/tree/main/api) +* [Ruby](https://github.com/hashicorp/vault-ruby) +* [C\#](https://github.com/rajanadar/VaultSharp) +* [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) +* [Kotlin](https://github.com/kunickiaj/vault-kotlin) +* [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) +* [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) +* [Python](https://github.com/hvac/hvac) + +### Convert existing secrets from AWS Secrets Manager to OpenBao + +The above steps outline how to migrate a single secret stored in AWS Secrets Manager to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in AWS Secrets Manager involves iterating on the following process: + +1. Retrieve the secret in AWS. +2. Determine which entities (users, machines, and services) need read or write access to that secret. +3. Create a permissions policy and attach it to an AppRole in OpenBao. +4. Generate an API token for the AppRole. +5. Update any entity code or configurations to use the API token to access the secret in OpenBao. + +## Production Considerations + +When migrating from AWS Secrets Manager to OpenBao on Linode, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. + +### Security + +For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. + +* **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +* **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +* **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +* **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. + +### High availability + +For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. + +* **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +* **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +* **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. + +The resources below are provided to help you become familiar with OpenBao when migrating from AWS Secrets Manager to Linode. + +## Additional Resources + +* AWS + * [Secrets Manager Documentation](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) +* OpenBao + * [Configuration Documentation](https://openbao.org/docs/configuration/) + * High Availability + * [Architectural Internals](https://openbao.org/docs/internals/high-availability/) + * [Detailed Concepts](https://openbao.org/docs/concepts/ha/) + * [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) + * [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages +* Linode + * [Documentation](https://www.linode.com/docs/) + * [Linode Cloud Manager](https://cloud.linode.com/) + * [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) + * [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) + * [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image1.png b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..f17bee886ab45a2ce6633609ab802b1b10c492cf GIT binary patch literal 71939 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 H``iBqSI=>+ literal 0 HcmV?d00001 diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image2.png b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image2.png new file mode 100644 index 0000000000000000000000000000000000000000..2b36bb47caef6b6091ea48a1edc88219d6dcea3c GIT binary patch literal 73183 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 V?|dp*rd!BA1zFW6#nNUW{|`(&Ui1I} literal 0 HcmV?d00001 diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image3.png b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image3.png new file mode 100644 index 0000000000000000000000000000000000000000..91aaa029331db074a37ba2ab2755cfa900b85ee1 GIT binary patch literal 90740 zcmeFYWmKEp);5Y2E5+Rj?ykk%rMN?IDDEyrf>YeJNO5;90gAgj6!+r(@qFjJTb{l9 z{yINTa*vTa87s-P=9+8jwZfGZr9L3yBSJtxe2|eA{{#W?4iW+a3IZPX?Gv`ZQmMBW z7-vx#HTbuO54wsYtQ9s^r+Hx|RsRnKzrUH;DjV474 z@w;?Ok}?x*qI6|TVVrKu4qM^w@4E9QP+n?%%iFWAx|he~X+7tRcl-GG^GAzNg({_3 zvqwLn`MtfzXS?-zPeVlg6ew(TQpi7Cf!@i&o8E3_dbkL25P!G=Bm)4X%rJlW1xWPf z0R&~3_5tqHVe&uy4P-<>JFIj7%zwW&h^d9q&WYEJm}37hA^?U4>No!XGK)+IiEeM7 zFD?9kM41c!)8W}mLO9;&jPzKE&AH=A$!B1ze z5;{xQ1RgWD>?!!H)(=+S^jh6wO}2j%qVXiSVEGP!O{QPd2(xxs{{T3!O}yI-?VM@! zGCAynVH0*3GEw`E-$LLeO#Y2NxLT&zq2FWnUb0*UibD9mU2%IbFYExLVU6*P;txUq zs$J!5G1IUZ1U>1NQ0F2Jy_8q2Kh5-%I1td}ybt!TvbO8Za7*XF+0>bhESP_9b}rqp z)tu?|ApwWN8lZyKB+BD+#kLZOEgHKwY`K26k^)sXb1>1)k^P>wB1<)Y%3Ub4uN36m zY}y%K zMqw!3`@W)Gxm}B_d_6s?Zg2WrJPX~U&=-&J?h?JzAT9XTJ4xz#h_B++5apZE>2Hem zM_Fw(?+K?7H=`ZN4%hj24Ep}q{>1Ftff1)39SI^w>=(!CQE86&vHWUCQZX55{tt)| zn6$yC{Sr&VU}8t zC96uB4sLu7VtnJ1OxeDa7e$r&Y;C>Mdr&3iEMn%z|BQtwwhPze*S=pMpaz-__?Z1(izKalw5OA%r@@aAg<|l9@Oha{a;k+xVZ(>N z8U}F?OGRE2zF>_mw#9^Q&_Ec&DGB1}Gp$~8T>n9VAC@wAH}twvRTRn^gA(L~c0jq* zf7>I%P@eLnnt)vNRdas}@dBLKjf*jVYs14w`?;q`dSF&j1o}f_(s~9nKF9m+$Kkeu z0+8=cMMoMa)!eKwAB$Q9kODMLV-B={#Mm|a7mYRtCP|2#I z3);qTmD}Jp&QuS=?s{BRQMoa`C81r?@_%wgkUcJE1XMI>qSfOZ$#J5L$J+ruV@t)K zckBnj?;jgf6aPt7v&iD;-HmqAmyg~-8+gsh)h($?AbfI8rVM|7pg#I;hUUlDu;zj_ z&4*o7iM}NDGZii8?+OXBvPPGf?lSt%zsWB#ormni$`jC@CO9z!w7be7 z!X&J$+F#2z%M##h7Mr)lW={&)2ub9S&rG374#eT?IT0~*N5W__-Wh8D+{-)qtbvey zxF@$Ym0_+QuhYd>)UP6;y-Qn3Wn9AWJmWY!roUSlf&T8Acq)uV=Br=g(beyqF{{S{ z9F?<^Q?mx%IgA>o$Y!e?*>*tCCZ*#fQ)uli*5od~6pVqH@4jwl$(8-4zk)(~$RAu? zt}yz~B>2>6*(Ack@}G(4u7bP@7%6J3#Rg$c0_w@1hY%-{wp7~V%qe+(kFupV=-Wl2 zznG7u#+Z|hW<|W;KjazOQqf*|USEq$AGXa3*aB=}O_pCJMpoFWw5B_eYp~wU@S3sS zr+`-pxNk?It%uAW%C*$!jMd57T<%+`W&|D_92F?keKRroWoa0hgo+2dWEmJKw@T5O z4ei`>Zp;i5XLppkC~PjC6fK|Jbv>t zj9nyUZhB*r)@#RnS!S|$!K$ufdUqjAO;1&_7-zVBv7UiGE#0(j)fg-ztz=UkwYXaR z=Ux=7`SKOIkCT(LWtyxe4;=NMuSaZaAnLP%B8rQF@79998%S8*o& zKetn$PUZm@^I5bQsny%iYflHjzV4kMe_1UxjnFgMWc?jrIU57LP4~c&G@)oX8jty| zRU)SQ5%KtX7fG(ws5Nd5GEB%o(2RoXd)ou*0{iSDpNo(jtTN|@9 zAEp~etb>Bs6uq^>U5||v2Lp0aq5LCJG$~$c*?#@eM#ER?iArr+B#)MIs`%PJ#h)wM zP$89aEp=jRS(9^NRbsQHv&yUMuZ>C@KUpK?&gjQeM8ssKzAoo)(bE}M=}&*Mqzjim zjzs@N%`80wgz8+Y8Hv7&y1Bk%|C7b?&*-+TgBh{c(hX~DAy<9S+=5_AYW6bNLVT`n z7O(pgu(BNgENAN~yjVZ|2e70-R6?L+!@ z!k=R9?p1)WTz8v9_ICUqhY$hYqGsg4U6w!XEeeMw__xSh_ZKhIpTUs*75JiBB8&ZZ z5Bc`n?vZc7_5Tm$Z&LpMRw{OZR7O!cQH!d3WWR%3gsZ+JQ2)1Fso?WGROa{xCl^_bn!KO;Zfr zLN9+}1txw;ea_SykL8bD>}vDk%s^}M;qh`gi}dWG+_S!GoBdgDPYmmR7K0{-@|(C* zH>2B8=HD|ZMEWz{fq}e zUhGkeUpqh^1%{N}?wKKCRMaVn=HlQu$t7Pj)CIgtAOm;knh;FS&Q{Iuy3JJeZWwuL z%`xl0tr&&F@?VMS35ZwNkJ9MDmThUiDt4mMmsJq(5~G8g7E>09^kTpTF(ul{8mnWSe{_AzH2=YL-geV zNcOjt4h$0BNEYv&8J@4P3q=qprOK7aGx3<)<_T@$`x3pb*L{8T&iFoa+dsWqf*k!U z6e~rG3LRg`M3Ri*085YA8pYf=phmxQUU&f8;Xg52Z z3SHUmEdrARM-@{$f+jmr1KssEL2&gBj^D)MUSze=#M1n{|3m�iQTSbHJ=>t^dKW4L)AHuzW-) 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�(-6PoTz*2fd*d}~z)gwMVZW7=D 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 BwxR$4 literal 0 HcmV?d00001 diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md new file mode 100644 index 00000000000..445863ceff0 --- /dev/null +++ b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -0,0 +1,238 @@ +--- +slug: migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine +title: "Migrate From Azure Key Vault to Openbao on Linode Kubernetes Engine" +description: "Two to three sentences describing your guide." +og_description: "Optional two to three sentences describing your guide when shared on social media. If omitted, the `description` parameter is used within social links." +authors: ["Linode"] +contributors: ["Linode"] +published: 2025-05-01 +keywords: ['list','of','keywords','and key phrases'] +license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)' +external_resources: +- '[Link Title 1](http://www.example.com)' +- '[Link Title 2](http://www.example.net)' +--- + +This guide walks through how to migrate secrets stored in Azure Key Vault to OpenBao running on Linode. + +Azure Key Vault is a managed cloud service designed to secure secrets, keys, and certificates for application security and compliance in Microsoft Azure. It provides centralized control and access policies so that developers and security teams can safeguard sensitive information such as API keys or passwords. + +[OpenBao](https://openbao.org/) is an open-source fork of [HashiCorp Vault](https://www.vaultproject.io/) designed to give organizations control over their cryptographic infrastructure. With OpenBao, organizations can deploy, configure, and manage keys and secrets in both cloud and on-premises environments without relying on vendor-managed services. + +For organizations needing customization, OpenBao’s open-source model provides cost efficiency and flexibility beyond what’s achievable within a managed service like Azure Key Vault, while still offering a scalable and secure solution for secrets management. + +## Deploy OpenBao on Linode + +When migrating from Azure Key Vault to OpenBao on Linode, your requirements will dictate whether to install OpenBao on a single Linode Compute Instance or to pursue a larger scale, more fault tolerant environment with OpenBao on Kubernetes through the Linode Kubernetes Engine (LKE). Follow the appropriate guide based on your requirements: + +* [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) +* [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) +* [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) + +In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your Microsoft Azure account with sufficient permissions to work with Azure Key Vault. + +## Migrate from Azure Key Vault to OpenBao + +When migrating from Azure Key Vault to OpenBao deployed on Linode, begin by determining your existing use cases for Azure Key Vault. + +### Assess current secrets management requirements in Microsoft Azure + +Review how your organization uses Azure Key Vault. + +For example, you may have an application which uses third-party services—such as an LLM platform or a digital payments process—and you use API keys to authenticate requests to those services. Security best practices would dictate that you don’t hardcode API keys in application source code or images. Instead, the API key would be injected directly into the deployment at runtime. The application would be granted a role for accessing the API key in Azure Key Vault, which is provided for injection on-the-fly. This keeps the secret safe from being leaked via CI/CD processes or by being checked into a code repository. + +### Review existing secrets + +In the Azure Key Vault dashboard, review your existing secrets. +![][image2] + +You can also use the Azure CLI (az) to manage the secrets in your key vault. After authenticating the CLI, [list the secrets in your vault](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-list) by providing the name of your vault. For example: + +| $ az keyvault secret list \\ \--vault-name "my-app-vault" \\ \--query "\[\].name" \[ "github-deploy-key", "LLM-service-key", "payments-service-dev-key", "telemetry-export-api-key" \] | +| :---- | + +To see the [value of a single secret](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-show), run the following command, providing the names of the vault and the secret. + +| $ az keyvault secret show \\ \--vault-name "my-app-vault" \\ \--name "LLM-service-key" \\ \--query "value" "0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP" | +| :---- | + +Ensure that you securely handle any exposed secrets, as they will no longer benefit from encryption by Azure Key Vault. + +Alternatively, the value of a secret can be viewed in the Azure Key Vault UI by selecting the secret, selecting the latest version, and clicking **Show Secret Value**. + +![][image3] + +Azure uses IAM with role based access control (RBAC) to manage access to a particular secret. For example, an Azure VM within your Resource Group might run the application workload which needs access to the LLM service API key stored within your vault. The VM would be assigned the [Key Vault Secrets User role](https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-guide?tabs=azure-cli#azure-built-in-roles-for-key-vault-data-plane-operations), allowing it to read the contents of secrets in the vault. + +To view access settings, navigate to **Access control (IAM)** within your vault, then click the **Role assignments** tab. + +![][image4] + +Replicating this setup using OpenBao involves the following steps: + +1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/) that will take the place of the Azure IAM role. +2. Store the LLM service API key in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). +3. Verify successful secret access with the API token associated with the AppRole. +4. Assign the AppRole to the applications that need access to the secret. + +### Authenticate the CLI + +First, ensure that the OpenBao server is running. + +| This guide assumes that the BAO\_ADDR environment variable has been set. If you are working directly on a Linode, then an example value may be http://0.0.0.0:8200. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be http://127.0.0.1:8200. | +| :---- | + +Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with bao login, providing your root token. For example: + +| $ bao login \--method=token s.36Yb3ijEOJbifprhdEiFtPhR WARNING\! The BAO\_TOKEN environment variable is set\! The value of this variable will take precedence; if this is unwanted please unset BAO\_TOKEN or update its value accordingly. Success\! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. Key Value \--- \----- token s.36Yb3ijEOJbifprhdEiFtPhR token\_accessor ykmfH8QV7E1OU86bth3GMCdf token\_duration ∞ token\_renewable false token\_policies \["root"\] identity\_policies \[\] policies \["root"\] | +| :---- | + +### Unseal the OpenBao vault + +OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. + +Before continuing, unseal the OpenBao vault. + +### Create a policy and AppRole + +Creating and using an OpenBao AppRole involves a few steps: + +1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). +2. [Create a policy](https://openbao.org/docs/concepts/policies/). +3. Create an AppRole, attaching the newly created policy. +4. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. +5. Generate an API token for the AppRole. + +Enable the AppRole authentication method with the following CLI command: + +| $ bao auth enable approle Success\! Enabled approle auth method at: approle/ | +| :---- | + +In /etc/openbao, create a new policy file for reading the secret. For example, a new file called api-keys-secrets-policy.hcl would have the following contents: + +| path "api-keys/\*" { capabilities \= \["read"\] } | +| :---- | + +This policy grants read permissions to any secrets within the api-keys secrets store path. Add the policy to OpenBao with the following command: + +| $ bao policy write \\ api-keys-secrets-policy \\ /etc/openbao/api-keys-secrets-policy.hcl Success\! Uploaded policy: api-keys-secrets-policy | +| :---- | + +Create an AppRole for the application that will need to access this secret: + +| $ bao write \\ auth/approle/role/api-key-reader-approle \\ token\_policies=api-keys-secrets-policy Success\! Data written to: auth/approle/role/api-key-reader-approle | +| :---- | + +Verify that the AppRole was written successfully: + +| $ bao read auth/approle/role/api-key-reader-approle Key Value \--- \----- bind\_secret\_id true local\_secret\_ids false secret\_id\_bound\_cidrs \ secret\_id\_num\_uses 0 secret\_id\_ttl 0s token\_bound\_cidrs \[\] token\_explicit\_max\_ttl 0s token\_max\_ttl 0s token\_no\_default\_policy false token\_num\_uses 0 token\_period 0s token\_policies \[api-keys-secrets-policy\] token\_strictly\_bind\_ip false token\_ttl 0s token\_type default | +| :---- | + +Fetch the AppRole ID with the following command: + +| $ bao read auth/approle/role/api-key-reader-approle/role-id Key Value \--- \----- role\_id e633701e-893e-460d-8012-ea2afedbcd87 | +| :---- | + +Generate a secret ID for the role: + +| $ bao write \-f auth/approle/role/api-key-reader-approle/secret-id Key Value \--- \----- secret\_id 725d9076-5a5c-4921-98f7-7535c767386a secret\_id\_accessor b780e4d6-a2f2-4e03-8843-3e6a88b56f09 secret\_id\_num\_uses 0 secret\_id\_ttl 0s | +| :---- | + +Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. + +| $ bao write auth/approle/login \\ role\_id="e633701e-893e-460d-8012-ea2afedbcd87" \\ secret\_id="725d9076-5a5c-4921-98f7-7535c767386a" Key Value \--- \----- token s.TuQBY39kkpEDOqKcKYbWvpmZ token\_accessor N1qSJiqOz6mXlpbmFVT2LOfS token\_duration 768h token\_renewable true token\_policies \["api-keys-secrets-policy" "default"\] identity\_policies \[\] policies \["api-keys-secrets-policy" "default"\] token\_meta\_role\_name api-key-reader-approle | +| :---- | + +The AppRole token (s.TuQBY39kkpEDOqKcKYbWvpmZ in the previous example) can be used by a user, machine, or service—such as a web application—to authenticate OpenBao API calls, giving the caller authorization to read the LLM service API key secret. + +### Store the secret + +Create the secret store that is defined in the policy. For this example, all secrets will be stored under the api-keys path. Run the following command: + +| $ bao secrets enable \--path=api-keys kv Success\! Enabled the kv secrets engine at: api-keys/ | +| :---- | + +The LLM service API key secret stored at Azure Key Vault was a simple string: + +| 0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP | +| :---- | + +To store this as a key-value pair in OpenBao underneath the api-keys path as a secret named llm-service, run the following command: + +| $ bao kv put \--mount=api-keys llm-service \\ "key"="0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP" Success\! Data written to: api-keys/llm-service | +| :---- | + +### Retrieve the secret + +To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: + +| $ bao kv get \--mount=api-keys llm-service \====== Data \====== Key Value \--- \----- key 0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP | +| :---- | + +Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: + +| $ curl \--header "X-Vault-Token: s.TuQBY39kkpEDOqKcKYbWvpmZ" \\ \--request GET \\ $BAO\_ADDR/v1/api-keys/llm-service \\ | jq { "request\_id": "4ea9a66e-c63a-433c-b2e2-015c39c45086", "lease\_id": "", "renewable": false, "lease\_duration": 2764800, "data": { "key": "0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP" }, "wrap\_info": null, "warnings": null, "auth": null } | +| :---- | + +This API token can be used in applications and services to access the API key secret. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: + +* [Go](https://github.com/hashicorp/vault/tree/main/api) +* [Ruby](https://github.com/hashicorp/vault-ruby) +* [C\#](https://github.com/rajanadar/VaultSharp) +* [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) +* [Kotlin](https://github.com/kunickiaj/vault-kotlin) +* [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) +* [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) +* [Python](https://github.com/hvac/hvac) + +### Convert existing secrets from Azure Key Vault to OpenBao + +The above steps outline how to migrate a single secret stored in Azure Key Vault to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in Azure Key Vault involves iterating on the following process: + +1. Retrieve the secret in Azure Key Vault. +2. Determine which entities (users, machines, and services) need read or write access to that secret. +3. Create a permissions policy and attach it to an AppRole in OpenBao. +4. Generate an API token for the AppRole. +5. Update any entity code or configurations to use the API token to access the secret in OpenBao. + +## Production Considerations + +When migrating from Azure Key Vault to OpenBao on Linode, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. + +### Security + +For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. + +* **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +* **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +* **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +* **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. + +### High availability + +For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. + +* **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +* **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +* **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. + +The resources below are provided to help you become familiar with OpenBao when migrating from Azure Key Vault to Linode. + +## Additional Resources + +* Microsoft Azure + * [Key Vault Documentation](https://learn.microsoft.com/en-us/azure/key-vault/) + * [az CLI Documentation](https://learn.microsoft.com/en-us/cli/azure/) +* OpenBao + * [Configuration Documentation](https://openbao.org/docs/configuration/) + * High Availability + * [Architectural Internals](https://openbao.org/docs/internals/high-availability/) + * [Detailed Concepts](https://openbao.org/docs/concepts/ha/) + * [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) + * [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages +* Linode + * [Documentation](https://www.linode.com/docs/) + * [Linode Cloud Manager](https://cloud.linode.com/) + * [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) + * [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) + * [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/image1.png b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..fa738d0bf1846174c277170ba7d9a5a4d1d9187f GIT binary patch literal 114977 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%0A`xZgqF471w{c1X-)7|s}PpPbVc5H6i$p4 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 View secret value**. + +![][image3] + +GCP uses IAM to manage roles and principals with access to a particular secret. For example, a GCP Compute Instance might run an API that handles authentication for a web application. That workload may have an IAM role called JWTSigner, and the role has an attached policy which gives it read access to the jwt-signing-secret value in GCP Secret Manager. + +Replicating this setup using OpenBao involves the following steps: + +1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/) that will take the place of the GCP IAM role. +2. Store the JWT signing secret in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). +3. Verify successful secret access with the API token associated with the AppRole. +4. Assign the AppRole to the applications that need access to the secret. + +### Authenticate the CLI + +First, ensure that the OpenBao server is running. + +| This guide assumes that the BAO\_ADDR environment variable has been set. If you are working directly on a Linode, then an example value may be http://0.0.0.0:8200. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be http://127.0.0.1:8200. | +| :---- | + +Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with bao login, providing your root token. For example: + +| $ bao login \--method=token s.36Yb3ijEOJbifprhdEiFtPhR WARNING\! The BAO\_TOKEN environment variable is set\! The value of this variable will take precedence; if this is unwanted please unset BAO\_TOKEN or update its value accordingly. Success\! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. Key Value \--- \----- token s.36Yb3ijEOJbifprhdEiFtPhR token\_accessor ykmfH8QV7E1OU86bth3GMCdf token\_duration ∞ token\_renewable false token\_policies \["root"\] identity\_policies \[\] policies \["root"\] | +| :---- | + +### Unseal the OpenBao vault + +OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. + +Before continuing, unseal the OpenBao vault. + +### Create a policy and AppRole + +Creating and using an OpenBao AppRole involves a few steps: + +1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). +2. [Create a policy](https://openbao.org/docs/concepts/policies/). +3. Create an AppRole, attaching the newly created policy. +4. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. +5. Generate an API token for the AppRole. + +Enable the AppRole authentication method with the following CLI command: + +| $ bao auth enable approle Success\! Enabled approle auth method at: approle/ | +| :---- | + +In /etc/openbao, create a new policy file for reading the secret. For example, a new file called jwt-secrets-policy.hcl would have the following contents: + +| path "jwt/\*" { capabilities \= \["read"\] } | +| :---- | + +This policy grants read permissions to any secrets within the jwt secrets store path. Add the policy to OpenBao with the following command: + +| $ bao policy write jwt-secrets-policy /etc/openbao/jwt-secrets-policy.hcl Success\! Uploaded policy: jwt-secrets-policy | +| :---- | + +Create an AppRole for the application that will need to access this secret: + +| $ bao write \\ auth/approle/role/app-authenticator-approle \\ token\_policies=jwt-secrets-policy Success\! Data written to: auth/approle/role/app-authenticator-approle | +| :---- | + +Verify that the AppRole was written successfully: + +| $ bao read auth/approle/role/app-authenticator-approle Key Value \--- \----- bind\_secret\_id true local\_secret\_ids false secret\_id\_bound\_cidrs \ secret\_id\_num\_uses 0 secret\_id\_ttl 0s token\_bound\_cidrs \[\] token\_explicit\_max\_ttl 0s token\_max\_ttl 0s token\_no\_default\_policy false token\_num\_uses 0 token\_period 0s token\_policies \[jwt-secrets-policy\] token\_strictly\_bind\_ip false token\_ttl 0s token\_type default | +| :---- | + +Fetch the AppRole ID with the following command: + +| $ bao read auth/approle/role/app-authenticator-approle/role-id Key Value \--- \----- role\_id 019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863 | +| :---- | + +Generate a secret ID for the role: + +| $ bao write \-f auth/approle/role/app-authenticator-approle/secret-id Key Value \--- \----- secret\_id cef786fb-1d1c-4c52-9466-aea47b3c8d3a secret\_id\_accessor 373500ba-6922-4f91-b7f3-ec25f8253d1d secret\_id\_num\_uses 0 secret\_id\_ttl 0s | +| :---- | + +Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. + +| $ bao write auth/approle/login \\ role\_id="019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863" \\ secret\_id="cef786fb-1d1c-4c52-9466-aea47b3c8d3a" Key Value \--- \----- token s.dy572yUtTNvHTZgIoxdNVO41 token\_accessor zT1TP281vORYSjysBiuMydht token\_duration 768h token\_renewable true token\_policies \["jwt-secrets-policy" "default"\] identity\_policies \[\] policies \["jwt-secrets-policy" "default"\] token\_meta\_role\_name app-authenticator-approle | +| :---- | + +The AppRole token (s.dy572yUtTNvHTZgIoxdNVO41 in the previous example) can be used by a user, machine, or service—such as the authentication API for a web application—to authenticate OpenBao API calls, giving the caller authorization to read the JWT signing secret. + +### Store the secret + +Create the secret store that is defined in the policy. For this example, all secrets will be stored under the jwt path. Run the following command: + +| $ bao secrets enable \--path=jwt kv Success\! Enabled the kv secrets engine at: jwt/ | +| :---- | + +The JWT signing secret stored at GCP Secret Manager was a simple string: + +| EU&&7O^\#c2GAMIdRyJlZkPEdoWKgy%CW | +| :---- | + +To store this as a key-value pair in OpenBao underneath the jwt path as a secret named signer, run the following command: + +| $ bao kv put \--mount=jwt signer \\ "secret"="EU&&7O^\#c2GAMIdRyJlZkPEdoWKgy%CW" Success\! Data written to: jwt/signer | +| :---- | + +### Retrieve the secret + +To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: + +| $ bao kv get \--mount=jwt signer \====== Data \====== Key Value \--- \----- secret EU&&7O^\#c2GAMIdRyJlZkPEdoWKgy%CW | +| :---- | + +Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: + +| $ curl \--header "X-Vault-Token: s.dy572yUtTNvHTZgIoxdNVO41" \\ \--request GET \\ $BAO\_ADDR/v1/jwt/signer \\ | jq { "request\_id": "0e70b929-06b6-4685-b787-dc1ce6c31b9b", "lease\_id": "", "renewable": false, "lease\_duration": 2764800, "data": { "secret": "EU&&7O^\#c2GAMIdRyJlZkPEdoWKgy%CW" }, "wrap\_info": null, "warnings": null, "auth": null } | +| :---- | + +This API token can be used in applications and services to access the JWT signing secret. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: + +* [Go](https://github.com/hashicorp/vault/tree/main/api) +* [Ruby](https://github.com/hashicorp/vault-ruby) +* [C\#](https://github.com/rajanadar/VaultSharp) +* [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) +* [Kotlin](https://github.com/kunickiaj/vault-kotlin) +* [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) +* [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) +* [Python](https://github.com/hvac/hvac) + +### Convert existing secrets from GCP Secret Manager to OpenBao + +The above steps outline how to migrate a single secret stored in GCP Secret Manager to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in GCP Secret Manager involves iterating on the following process: + +1. Retrieve the secret in GCP. +2. Determine which entities (users, machines, and services) need read or write access to that secret. +3. Create a permissions policy and attach it to an AppRole in OpenBao. +4. Generate an API token for the AppRole. +5. Update any entity code or configurations to use the API token to access the secret in OpenBao. + +## Production Considerations + +When migrating from GCP Secret Manager to OpenBao on Linode, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. + +### Security + +For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. + +* **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +* **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +* **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +* **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. + +### High availability + +For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. + +* **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +* **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +* **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. + +The resources below are provided to help you become familiar with OpenBao when migrating from GCP Secret Manager to Linode. + +## Additional Resources + +* GCP + * [Secret Manager Documentation](https://cloud.google.com/secret-manager/docs) + * [gcloud secrets documentation](https://cloud.google.com/sdk/gcloud/reference/secrets) +* OpenBao + * [Configuration Documentation](https://openbao.org/docs/configuration/) + * High Availability + * [Architectural Internals](https://openbao.org/docs/internals/high-availability/) + * [Detailed Concepts](https://openbao.org/docs/concepts/ha/) + * [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) + * [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages +* Linode + * [Documentation](https://www.linode.com/docs/) + * [Linode Cloud Manager](https://cloud.linode.com/) + * [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) + * [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) + * [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/image1.png b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..b0150cf42a0be3d4b44575f0dd7357e055404b62 GIT binary patch literal 285923 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%0A)V%XRU)!^xY1 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�e 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 literal 0 HcmV?d00001 diff --git a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/image2.png b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/image2.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7f6f7d134d82299c216dfd32960f2f570d8c45 GIT binary patch literal 300260 zcmXtfdpOhY|9`zJDyMfT5mE@GSoDT~*pAB;wl_EJT$(bpNgw6SE&YSa` zk8>P`F^n0T@$3`?WU35Hm z?w`fWOlLC(e7F9deJ+BZ=)AssHo`8y{e14+?Q=R$AHNQ=-L$z9WHMHD^8VjPE$?14 zIbOdp`0~-S8_fI?=0-mDrKW?x&T+G<$mt0Q7pp;bdr*=8>uIxA%kyG`5G4}SB9uzf_xKGud1_l7*yuG|e?H-- zb5NO)YK3gnrYCEE(#K0v}x?S-IMFO)x09UDewIN%b-0Bu$4Pm2;HUPdGc1>?c~?6VRA$^04>4u zIg<8$MCIA@yUZ+E|Ez3t_UkLnIT?_HI zd~9#F09i+kH=ak#SKG`|)OA@)&xJi2UeA*j$lBCx=BTaKzm+&b3lq_wF$((2r~CKU z)1#EKjSZr5-8gsfe&?UMA$6;PlK#jN8=G*B>Y(P!jlQc>sJ0bAxC^L|EKB2RUfYo! z!woTe=Ex3UUmXLFvuc2$N=mUB%VHxSD3jDg_10bsZKwNX&UTRd9%3f2k1%3Z@!i2j zcc$k^j<%^y8H(!Mj2)xp#i8$`&Q9{pck!7@dGJWxcc_hVh^B-$bFX<8P1D?7^_A~* zaGj=&^>Np-RLr5ati{A@S&>?|_@wJ6`8WA9NhwTc+Kyo~r63Yu_5s zB&S$TG}gXKZN0JtnrXf`ao|d)Y2~fXPwO)qKM$Oj`vG1mGO;qdg9JBwzY;C+ zLkL_B5aHR+EP90lva2%lL>oTeJfd~KKj2mq*P<6DMA+{=T2Sa%O#KPMieyq>*DWRs zrHE}DZHT;mI4WcU0}9Myg3hksfmS*NXX=*Ugyh-j*Ba0!8oynURq$FVnpw461%$tz z2&|`l5Uzk1^jba#cD#fCPgFYoE7u&O8y9)bU!W%l(acjeg7OJX{mF+0zfT=4u$*F! zQb$UvzB4JW?HPLy8S!*KRT3K>PkK3%4`1mg z=g7b>SlD8uRNU_<|5PivGV@_*JhfWV0jP;WLDRXdAjO6MqM)BXg}dgQK*PS83GSE3 z5ViKa!FKMSPl~fViHBP}W%)f7aaOa?PIt7|xAThtn}Gm9XdPuNAGZB93!S%HHV@w) z;;B`7B|AGArc%PjS0TVr^$fc~JDx)Ih1e$6{Pl5B)p#{ioShMuSnXjGwF;`oJ)KIH z&k+KF>cdA8x%qj;2==ZVwAAgp>vD3o!!?Z_i-z=r6Ng8Heu7Daao!%GNOavn!`y29zzRA$uHw)3DeUP~xkKTGYBEOy z{3?8CgTcEEUM z9=pN2(^ullTu%OeIC?ZZL}?8QKuCku?F}6@Z9+|LcP!%6BGjBsArY0G&HO=%&(}o| z(D+u`*og-U>M*R`Xk}yLISsR&E15bf7^o(uU3TWnq#kO#;&nOh-QPo_+%sU^syAA0+I*=JKUz`k0M(sA7ZB%rqU9`rPyDJi5zr#;nyudG z@hW_^ez+obxsQxCSBUWS75w8@59C1(RINzPs{A))H~~-Q4&%xj$QeizXu)`aLqas&ABw^Wzx zn?+k`)rK<#@B`NXe*nU|>$yZ&AzE5_oFigPdwKu7cEklk!FAoY6jW7kY1J(lB4%TC zD|VqJIvv~*jS<^UDvAM)$Bs^(>}OsLm5_Qcpy?Ug=mwn!!T>1i@!EO*OOaOzn^{8#H^* zHOhDJmzlm05?0?ygSwaN-YvEm>YcaZ=B8nYL%lX;`8Zj|+0KM{mRfFUd!S0n^gt>9 zo<;$?Ea`Vr+1I%sS%DJtLiE;(fA!@c@~2qIqi@xd`B1;Ew5n_s-!Kcut^&kOo1C$g z&ehX5-Lb2`>-jr|CbEe23BzNGvVN71p&F##!u@C2qg8c#cGviTGvBLtph^#*^yu>% z)HLN;f>tZ zhn8cT|F~?GwN^hQ2CvM-t8VY}-=m(XozwVUdD4R?#W0u9S5=*|_=8{P#6Bb^C$an4 zKR)T;jJGeekA%2V*|QnH8UI(^FBC52|srHN;A7; z8FUX-!cr#50NPTfbnW+i`=)<-!fz*4Pg2LCIt@JTctc-g0#)+eKiB zUrk1Z;oNS`*LEUj##7&jidE_cCnl$MT@JtHtX`fRPW}VFO;=(kODRd`#J!*N(Cc_? z%~c>9eFo|U4Z4gNb^K779HaDLwo_$%hRCiW69$W zt7OkJ$cR7|5X!R~mQ8!t@Nf7@l-;NP!Rp*LP}ZS6>$hhjPUh)#Pzzozn?yMCa~qs- zlMMZdFdP@0xNU)wm|PDT}ZHKKa@|fcRy4ERI*M5hFBkTa?EE=Iml2d*&X-k zs!;1Oj9G~+{a{iuWW`xEcT(jMdjF!+69t9qjxl+0W7JQ-9bZ^>rFIRccD*vAy6OQV z(ow7zZZR!AY&p6y{6f*zID|I&Z+ZH2$ z3V^}Aa6?QFzn*7rUA*C*I6V-zLARfHkc+LZ>XhHo?sbz|!fepPoM{hO-|~ERx;>`; zQcZ=JL-W32&*WR$ zw=LazgYxXb2Trk1rte@*UOR6nu$L9coA;qU^zJ+Ibjke-I}b41I)14rV|zc35Tw4X zBTjrMFdMhYjeWPAgE_2q@vvF1MljE#Y&mj|KW#{i3ON!V36AU;;@@U1>w0VLzS1VN zr%ERN5864(($}$ar4hGE!DE8N|KeFJq3UI1-`p}Fe(mjBc7CS21ahi@pl9}4bv1s5 zQ2+hQ`+woDA|yhYH)`P#ydwC!pb)+r))$ z2jOu#{~3$Uaq&T4YRdb999VCH@-^EZMZFJVT{{xx4MgPg7H}7dF-#|-U+jm~cU;Fr zVZHLbPvu%1H1;~J{W2vYjOr$?nFBnC%4|R@OYHQdChHbRw(UH)Ehxb1U@PbO3urGN z!PQA)zWJyxs8{YQ`-KA@XIM-jdcAi;r+JLBxa50BfeRC5s60{=!Lwi~Jm)WC!BI#i z6!A?D|BtfsnN1E}4e2Y1d!SuTVYsr4j)WP5&?u=h$2s7?eETbhR)PN<{gwb;9yMsG zO&Z(y6y`{Kc*f~J7EJs6l>VbZ6?)yulWWY`<1r#RiK?YMg8@qbG@a&u@#pafA`U$7 zg_pASkF6AifsXT1Qrcp*fFwrcB=#h^`Yj!-*q zsKM!PA3~W0FQ{Qr4s}RF?Q1>Fwz{?6HNKOj0WLGX9{g?(d{qZk2l-z_+(-TlAA%97 zj~3`Z)Wq?bJO@9dwq9TP>MO0qr_Ra!vhiSLFHfv)*6`E%qx(^;QLGo3A6&>v4ICii zKg4}P-{Qjr6#rBeTGHyJZ+_Z;z+h&&fWrI!Rd*98LJ}Vz9ElALBfZZccAvGg&Zi@h_+c4iMgC$;)pVRMtHMGeT8u)3VSvFkF3Zp|`7@>YsN$G?8($pgJEq4WHGb9`7Qmy@WF!67K)v4}j*agJlnBEQ5_vMV?q?B8>#8^kt64{X4x&oI<*K=rQomefpAO4pFk&e?K1FA+&V?czmfVZ z&yjM1GRHzspu{Xg(wp@P+{|GZ@lS^n;U|1AaGrKsc^Jt!+Wc=ky50Wpj;f)xxYpNz zjZvL9Lr>RynQW`2r#{P{0xpdh)c-Rw;CeB5MEp{A%^M~es4sJr4Md*gl4Iip3sgMc zcvpw^7UZ#}jLdBhEcvF-v)AA(S6_Nlur5!CNlEWN?PIHXhH|~3b$p;RC`y%)VL}Ux zFLUMJmxOk9c3z28dK{-LDOohE9F!r{FBI@O-fEoyx(*Fy9UZcg%$va#G|e_ZQlTne zfx)7fK>HKEoS$>z0)tfsWUCjg#@BS^xv=54=ChMv$KTXkhES4%jpU2VPI;S<8EM(c z+N%z>)*p3>t|r#Z`kFPL_nQ%nwUPne;#StBQ5Q?xgxvGg5qDD^YrkBTTi?=H8_5&p zZ8*HI9Z_*l@evJZ z;c)$suCmXpY=1EJL_*UK3pB|CaGR zT-viMt_l@^OJ!eB9q^i{Kt&aH>JL2<(2hx^?I+{z!J0#LVa9i~&TzQia8Ht+VJ1j; zhVmJz2zpD_H9u|@n`~^5;Z<^t!H3#L*-adD%13`{a-mlils%02UU5{({~u(ljj(G} z6t2>A6PCJCQX3v69ROj|o{{e80&)H%jp4W^eK7m~rUKIm9}^VyZ)ZA43X$YKavhWavd zwH>YRQ<`Oq;cpYRT6tQ|@YRMC=(}6VGBaQ6=;BI3q5MpWI&i%_?uOeN;oIivG^M^Y z3RgZt64QUgouM6aeiU5(_gcX)%i@dQ+^Sxyj~GtzC`TweO(UCFhy+HT^aKXa&ilH zLOI>p(K?L^<~|@D7wh5Xkcv^v2PX4 zLpCXyxIM=Mth!7v&2R(#IpZ!o;%BjAmNU<1%)9M0cUW)bTbNLYS5%`>!Ejmi>&36; zSgqEGZkp%pp_}ggAw@g)p8uRM6y6L!jT*FD?HM|ci0!|!!1l^;Uly1g{+aL7sm>an zf36AHcrg!9$nj5uvcvG`)FCC5uhh*MyW-j5c&SeAqedWD71}8F?>VyuS zdTm|55x#TJE7VRk9|_*>ASyrKHV%2ycgb^bIJ*jdisL+79mmV7h29jT`8*^CDz^R5 z#kQ78pSFHhR(@l#DCkcN5ENXWxf;!qqLC?oR5#&sO6S}0{m_0;8{Be>XM8&Q<8&SW z#PO1bzkm-bFdTeo6?w}4iOq5$L7001y;|hMfFj>~iIii^owj$xGUH?5lwKZ*nJLtT zOb+_hdKUSriovH6A{)o!`BgF`G>^jm(|zEBqxY*jrk*~%KlTQf7#dxPEKi?C7z*Dz zb(cY_;DWDGt31E`t^v=!j0>mf>sdFkeWGOiI886WzX!vfByH)+?M(FgST?VwDLJTa zP*MLF4|v73am=>~i~u`yiAh;-@Wy(=NS^O9*(?!oa$#Auxqz`Lf&(^chX0X;h_hAd zG~^8~1~ap|_N@uj#0LIwrr(RPz6a_w2X33-fT4=3-r`Rf?HNC|)16g3O0HK$ zias1#Kk~rMH1KfFn@2iY1^%2%%-$h-XMLC>Tex9O^`N^Z$00`NQyRcls-*T^WjZ{* zq5iwANV%`*bGrW#%c;jqyoMz0PAC*k>9OE4N#LEenKP*l+rwEV!BY zNn0?SS42}BJrEIxsf1u#b6dBJlyzQBp9+PCIqygK-a|K6T(}UD0=jPGPRFDjpC62P z!@OLps*LWh(;mxe*!%L(N5>eVRJS9rFI4dl)VqnbhCkgu=XB%sGHUE0St99nq|IV5uViip`&l6@*feQ zoYXF8Q+|mL(L!Isug>-6b4|MG9jcWz2@Io4kQ#~sAuny}>WNDmUX?`+-FxHrHW1;l zoN}uh#y$fD6^V4}iX(U-flv0?_9d7@OZCXk?x2HFL`_k5L_eCxEU6b4Q+5w=FPZ`n zf&?JUR8#ph+q#@jBXu6g+9X%Hk6aT$s&g`6f21-Dum`_mOUXMAedbpR96wUL$`>y9;rhfGkOHLK4nH0Jrx=$J z&n1=>>wXfdGT?2@qAP?F%&W0YDEb0N*FwO%NzHR{NwJ#fOzJM9Klz!UeXM+PeB!kb`Ph7tsH7f3za=xhEO~^+LUp$@rt~xO*3CMOuDP6L4*l2D zV^bhdA-rIEjBz-Q&(Gw)k^t{FxOSM`_)^uRZNata{n~$&XM=93O=N!pv7WNc`8a2B zg%f!j!|~?F`)%!Ie$zQS(FLpajwn7C+%*kE?Ufqq5bNCMDH_L~aZ>zW#KQe-#WRNc zy&#*k_8gqN^ChwkduH{(vw3eQhnAr@Nb_0wy|a)sL9*uC@oV*%zrUY&OKoK?_M}h^ zVcDnq8vyo6^SeypfR~7F=9;nY_ms1+R&~GeFle755R$k}{~WgWw2`(k=SND4c_Kxg zj@sONd4aZEJ4*{YqU9bJ@KzlD*X@ipe)t3Y3+%S1tNWc`x?Ie*o`*`QIVkaRt5g(Q zj78=X$D&QaoV-*DOEu#?mS9Ca3QF?L^q$p*wnqFYCb-&&JH!~?HTn=30hnd3C*Fg8 zF-Q#)pyvGWHn@*2E*$Y8(5ep^)aFlBRO|Q5051D|&AFD%*=UCsR3~%Fz=J;7)y#(e zwEDM_A*+IsfddH2l^b~{WtdzlnnPZ^SzYwfc1cIBlE5Iq3Yyovs#&{O_m4kn?Z0B$ zQB{!p3-{&zjCi`)J;&vK@5S=pY4ayidZ(?orRWD&ChL683(}r$a@lQwD|QAG5_lpo zRpy~o(b}dVvD%|TsxT-aWz+nVQBvv~vx&V@|Biq4HZ4Aufv=Xv#(4!XE2}3)-)oX> zE6-tTFXyZO+1-GAbI3Py{l|*KtHtu0<{|b%jpX*$pnPrld+JAbNb_R?NhnR8?XW$b z<^Et!LywfmE%??E2t{+M>`$ zrV4)S+NmK{@{S0AYJM}rbM$JYfoJ@(YMp&w@X7DHq-{`Y3*(hI$s!kzsJ?|qX}}@= zvU>F0S5ozVrLQ`j@`=m^M3T7DXrfl~y9}wg!+|$(+baV(s12$L(S9A(Z(gR8^7+Z1BKbOIxyAM1AQ|7}F7~*H0~5W!6F0GSS&e)B2j+Z|=k)%s z7vQAFzR_mWp6ha`@{;nm8IjPXvBdc&C#Tk*e|By=tUZ+MMeg{b3b?XAi)C#;ixjAy zaI%|hYnNL>OO_roJKv__KLxEdz0Ky9fyW9Xx$PDP-<#9-+~o*M_tH-Ho8=FTTbB$H z#$?c&N0NzPqli8fo-Yj?uA!G*#`Ew%p^a@K2lkV#LVk1Or@3zx{Y}ng{z;S9A3^h) zO!Ev$VeZGk|=>TCZT&A)&x`{d$ zopZb_cDS`2o_aXK44xjcDz^Ga6asxpA%H$OLO9UN@RmHo#t+(}W2C2sO;|HK@;F{@ zHxLr1^3n^N9{C>pMQ&|cSO-N{MdhTgCrEynT{&4-O&k3onLn#~Ll=1}5s1PghL`Nz zx0&LC_f1mi#_|M&ojF}3m9DY9m}yv7r{`5u-0_hju(Kl_c|BlaBDMcVybkh7 z)hDw-K)abtX#QX|R~Sh=b(aI41@8CiGQ#}H)_NuWE5lyuM@!av-XRjUO?0LkagF?W z&E-rr8a0h=H=VqjRt#>#8u=oQ@j|}6(lrZJ6ShTbgClN}`D_W3rRR)6wpZ%#iO5a% zra@|P0_jG4Xi2aj2TqfZjrrv2X_ope*eTgh0j|O1VEaOFN4bd%z%itJ7O`l2_myV! zpcBi^!iA)-Djp3-6%5UXrAxm6@+7MA;&-)%vLM|3IIEePHJS>y3=NJicx}UBzEsA| z?M=5B-SBWRn&8~OgyUsbbze-nqu5)8{b4|F59*U{+?Z=*cxu-9Mh))R>bgcQWQRj@ z(B)XziLCk|tYBv!6!8W1%y1E|+1F7W(zJ`uVS7TX7sJm)WWH;lD_kPOTNn|xan%zH z_R}!3cpSZ3eDV-Rmp_4S)se$bSR&eTfEyoX!ZoiL-($>X|MC2o&JmBv6wkMH)J>i+ zwW0&F{{Wjz!3GvbJ;b`?$p}wq-ygYoU19TLrF)@M4S!q#KqwK@Gl)KMSRADM+7ngB z6k@ef;~AV5YLsF^&U5Yz5vAx{2gZ7qJ77FNrAXporJeleri@aMiFI@?yuS$q}ufcLb)cYVbuQs8c;_>0UP& z%xrDB?%>3k!KM+c*9Tn#|M_La%sWxPf7bD1X{d&qUSEsUHk^KT?rO+4Y6atT=L3Zl ztoUKqW;1@E053+p=dMBa{e=d&2+7dfpF)*d6$Mu6Bh}WXX_p}ZF%7)(sKNL$Lg8_S2q{rVE#nfu+glv{}JC)R4fI>A+(I-N*kx zD1Y&Qd#-iVFz~zP>q?gZaT4yLS2q+3PO2599!_SPgR#u@LpF7z1KIH|;d;tA&0k_P zWl72++-SHk6teF%eomEyYb}4)=E{v*N9=q}vZM$^XsYR}*q98s24DRrG+s`Q`gu9o z^!N4HdCQn=8?~R#0u=Ew6NnyT=r<2#?D-$Dsu2{YjE9pObHCi$=CGu5c_w}{Z`Qel z(mk_bxxX0;L2Vnbc9n?uRke3xepn4TNu`Ds1tQRKunPGf)ZMOt?v!bssiJ49bB!Ew zt-F4@IpZW#jVqP6qTnOf^nr)}j`Wfj5h#_d&lfo;(@Ky!iRV~Oz|U;!ccZ1MxUWSH zt>qVt=l!u3YK6=QSMiB+wKJy)+wT{*X0OOXIxm8x0YWgl{%>NxGaxEgvjgjjYBmKv ztXwvdo#}_^%Aiw9W=bWzZ*DkEbdF6}$H!;>dc#0|`!=mIrZMp+DeEFQ2bqMq4!Joy z!#9Wsb>9DD%$>^0|G9IbZdx)M%m53>dJRZR8qI(2*6A8Hn}Tm72`jJkIKFHaNR0GJ zx~K0mcSI1z_RmW}mbTkDX14;{qa82_WHno5DSlq(|_?3xBcka&|z;oM=Iy`3{m}t=B;pbQ`qTwl)S$Rsg^1n7aGFF#r-|U#GEm$ zYd*aAAFD=1@Y3Jn&Afruui>7h{^P_h%sr`~6@C8QD&g8%Ev>f=MJ^!`L?v9HtMllr z@wczCZlf1ctp~5^b0A|aL%HnH{68iZ-mh)SypSlIy_k)xWp&=nib>x#VRD&J9yeMF zmZ|@f=)y5iSP?9Wu^%V zQ=Dc41<3hP7eL6#8noxNB^HXNYJt|`GdXhNlOHH~Ns9?T-7PwLQ+qI3A>`6k+a>o( zl<7&;KwayRV?5FK)=1zJ%66vnG>{Uu*FVj=SgvARRV9Fai`Q`!c_`@Ak}8%t|N4O` zJa|~BMf#r-2TI8%$}QSWGP!wUVMYC#&~yS^GbHE1vck=3sD{CS2R|@O_!eJHN=4&j zkb)5ZNSMXZD}e6zrF+AK*9dEiofBSbu&vpC@Rn!Tc5 zBFC*8++M!k9ehHO!rAjJHr~*vYXZ~uTXZ42;0FAVrZ4QpnhA50p%<*pImPbr{D|+% z6FVkVO7sMi>{hrG@P(?Jj`w4ZNWOM3f@%G@h z_pIrr^^w~2>`_SPZCr`S5$UOp2GzB^1NzzBLd~)W(eUz4k)UP0;nbDTDmQ=>dqI-4 z_=*o%B%;$?O9upT*C+3}C}k+G7Cd#H&%WPg3!z6PQWf{+vt!OFOgXee)1>PoJOUAY^%jmEqs!u3y9`EjEz9ZQcRIy zi|mS~4X#gN)9PK8Mle5nAGTk@t4hc+C> zJj=WeTj7Tz1IyX9ddnMpHfocU5kdTfmS8SIlJG^s{LWt9QP zyBPdW=7`va?IZDO51Ec+GuxP6nFdyv#sSZCjXPmX+|`#qsyc)NKR^A>iVp3xxw$KR z57FQHL)Z`0XRA!WZF$HjSM+CbIvkwSVfJgXU3#}kF`v_6*cRj@D3w^@QJ|CS+EpGg z?Km-A*7+4whuv%+OsHu~CTm2jyj^az zzV_;aH{`mzXUqts4rwA8Q)^rC+{FkGe92}pL|H5l(OR0rD9J7FWk{?7dj%>aMzecE z*R^^?#P3_ebWTG!@tP9I?&GD9E)&9?BpRFC4o)U0oE)p->-sPYY|XdtD|Q^^ucq#M z{Z+FUZ2+<}#%a)Ucm=kI=JW3O6_d1cLf^(KbEyCO?mun;8JckT40XnwabhnOekvf9 zu6$lIbl-5zZ_Ln_@O7Z;^sZ3DykM-m>_hDaCxNoU`$Aqk+F8GyLX%|H0;-E0LWQ|Y z-qyIpq$FIY&Z?BoY1D=lG}sUadUroO{@xJour!(8^<-VA>8U_6Nf$z%l$kG2&Dko@ z)9FTZAVs>%>@b!DXZjOdXlL;k+YSGgjQE?L_bz^^vFnbFXxDU>eteR!oO2h;d* zmD6*Y-_>S7Bq!&-l#$|MMY2K8fqPkjgP2I>+ed;?l3Cx(njGUl|3b>#FIu@@R8x*5 z#^Z=dO4aaU{f*ab`k1QMP_G=7MYG<-IjER^>{mjgn) zE~oW=Ae3oA&vmp@uP=`Q-Xd`q?Y?YQpEeG{95m%Yz1 z_FqCxJL^anW0q^f-uuUesAZw|Vc3Jqrfr?{eG~C2^IVmDT+Ga4;{$ z7E4um>PC@EgkC5=^m{|J*rD6U^92f+H49QoClK^Frs1VHk`cqRIne!m(=syg^s6c% zTz<`xy7{}F#D;5-{kb*r*rD}&sCos9&YlSD>1=Vmd9&Sxt8<_aoCe1d8H(Vb(P*$d z+~XeBvg_H)Mz+7X4yo$Nnv3+T6EnM>TNFvD!k$XCt&5y*6&5oF4ST*_||AS3>n`}4qU&P;qgvr8px>F zugF3cM_$15?9aKU)htLi9#8?hqkCp`R%E97r23WJDH_t_4^1P)U?}IH*C7s@)HS8L zo-~sR<#l(-IgvK)iKgKf=7dzgMB-nimep0M0!Hztxl5dI_b;KLjisvJeQCo$al*{_ z@^Qr>>iz(SXfuub%YMm=wyH{~YVu(^3&_A+tX#jimwZ&X535(S;2!IaM(i@)cM}Zh zW9n12Vb)gZXZ^(HTJ(+|4vuqgRHrhLD*npe@gHWp|N9#dOY0mF6>O`%PJ+V~}U z{ChYfB#6C!bn44*($5s~OD3C-$NJsX`(v7jhcexkk%cU#Z_ulzYxBQ1hhsh_P?N{5 zM$Te+vF7`N_nJX*u?+&AsLlY6BgWecgJs4`AN7{1z#?3pi2bV433a8C_S`KJ-?1%; z>)WugS+AM50WL#inV{fTGg=#s=ei*_|E{;DQdbi!2 zCXx23GW9)>3a=C`Ds4Mkxav0r?r#edg$#?YLJMo}|1*<-`Arj^y3!omqi!&$9T-F^apdSnWK zWwsrjtPJT)ROe9GGTTDC5M*8)1@)t^n(5!=aIn^2Bcs6}nwaMM5(+Qo1njbawkzusTbzf4T2&CFKv*FF3XM7M#C(6}Y zfZKkk$~!GgTweU$D8zZ#sXr=MuI^&K*`+KI}55$Qk+78s){q#`Uzi;caIS6`c;D z^J)cbfe~U8b_l}F8laF`U=wodaDQoE;A$f}=Aj69=fS@<&rA3T(OVOGK2phX0yW?| za)|9wq?yUXH&C-NgXdW6yPaN5X`_?5;#@(;BheCsaCVUjg`2#nZTYYX^wBW(_|+fR zP}Z+J0XgyMo&pU>+b1Euw2{RsrB4=r%9C?b=FJG{PgP61nWed)N7XkB)|ao<4LC#D z901;(Yr9}M&!WuN79@!;I1fGO3LCXJO@qX;q7g)mpIW0wo9*_cEPWKJ<&-iD=x_U; zI@dnz0QdnT5M5|`A$kVmxTINRRc-IQSREe=Q+4(Hhk8jBc1_j>Af0t@Hj~n1wYLk4 zfPPemwB4Sc1>Qj}$0Yh`oUn)47e8inNMG8U-4ctj;+e~Y$&=!}lV-_THzC)5Zw;+k z&>yO+K_clpD_;5*2loX1IsUyjU@)t;RN1yt3n8i9sOPW-EKlg29Nb`HggTIW*nO>f zGJR|d0*`8nVj^FXN1pv7T5jp^1EBh#(^sY6*ZjXmmRQ2T)0}y1>kUX#cw0eI@fPYR zm8So-L4*KIG(z%@d5lF_2()e8aC9ScZNcSec1aV;B>tl61|tp_Df`CgP!K?uIw z;LmPh;QB6+-e!u}c^f^$k+^M`1a04G+xl~;&sB30_f8@cjptgAbKjo-`p>viG*U1U z{z+&7rL0s7tEwskk4WHDy{X~469 zxN%4+NAuvCTt9jHFH01xMk}`<6y0~m;Zmb>Wr7hoWMR{~X^RHYBRhlIg;-Ujafnk% z?Oi_4S>}01A!t+pI|1<_nMcuE!_STTXUid;Dl$9)kA;>GNz(#&(%{k`}C%ZmwK2FnAYY?ZU#0| zh2j`K(Y^Ct#WrQq=3e8znTP3T$DZlBDNg-X~x)4a|@x= z-8M_=(0dOMen?u>9&E8u%!6@W`DGwxao)?Kq( z??|cup$1UyG^&QHeDcLYp2w&=(zT^1Ga`%Fw#R=aT-5mQQRqFS+Jvr-;VI$IFlehgQvtO3@^HyyZ-z}m1 zHyzBOrOFMWv`TSw1+s}Cs6h0Zm_8OKMQ9nwso=c4etJ4nJ#yHBIv8z}eh?XBKh52B z@iqBy-=$x#+O*fJH`DHS%W4!_f#m8qlY49Gk|byszl6e#0cR!cz413qMcug{U~(I5 zh21u!AoHw+XNO5M{^g}y)Hvu>EoZJb{W3M|H|mnai)Odd;yJWphiBeqao^aQUV#fg zWLIWy7VKoF2TZWHCzF)qmh9(}0`8{XQGU|98P>;3m5d7x7Y6o0_JZ(CVdOczV~U}n z1I5VsM*;oPZzbo0*4-mnyS6>avVILQr-|uHL2sA!52u!4*4YZ}=>-4wYBRx3&Ta3u z1L>SM2ZzlISdvO+woM3Yz+}%{+St~j*S70NWiidDU}Eg-GX+4Y+q8MuDYL`wMqpty zjdb+l*`#%;U=E0SRXJ+-obET`tQs#p+-^QUe>$I9>Xw=HY%acEa=D`xV6;N2 zmn@1Nrrkc>od6GHFOP@+7~0FA>lAlCoPOYaomdyT%OlJaCYvLjIKnVBgz4yYXsZe| zqaQVdX=)k7WUISI+!4WCJj!cKNdnTGONLNgq6Fh_m~u;hwMtQxl;F}^{s5w>H8$XQ zUv}myQ59B($iW%Is`NEGZp&Zg(vVRS1@^2>J_#G*z)R<7t!#UC2vSzeC1q{2a(jVj zH2-IfCO8paS*=Uw6~l8vcQKZZ)}yJ?_=QxKdPF*yEK5#_SRV=Vm3fiVZ)3MWqZ(_xB8B8_L#%(NtmS}7GysPG?y&@4L>L(IJsEUy0iNu;hOuhDDw*; z8e&XkqKcx#Lzx<-PvhX#RzHU$eMJQR8&n$G_*vg(URZ`FGGT0~%#${X5ng;`yKIOy z-^=h${3+|1df1WhX4o$d_P`^SBY53%Ic@c0^?hwy9)Rx)z-vw3hm^YHG)fLyj8R#* zOPr(t8Lv{(0^*iUur~$rMt^k0f_gq{1nUU7=Xg$i15f{KTuq`#THWHdI>Da3>rj7O z9eTx(xi^G#`Z6=|SDilBce?6qZ*vsjAS&HgQUbxLdCpX&7)jeh;fGhB==8GljBeWKsUa@-5xdU+$~7fTHTkq_ zgXPw^dyTLRsjb0qXL}Fggxo@>>)L#+(DPgPtaCA>C;=a{oUy}${emIC5T*J6QUWt- zic=cX6gMN75t$_fj}K*D#;-=`KWi{6A1VZ!#chnSR&dukx2jMq`|Fn$i(=*Mr+d4y zR}n9LIC{TZy}uV$lFr8#rXj#OuAx-`5{iQ^vc-kDJP~C#oRIzB3@5PZ2>)T?yXfvL9ry4E~A^b=kV3nQE!YRNp<&s<3wf-K3aC68_^kd*NMkz;#55_Q%>JzAHG{dS@mE$;i4L2Z9FP zp^A#0HTEbrl}<5^x1Tk`<84Ss4;a|`a~%EwW(9|Wa$y};4tq_W@u)K9yRvP2*1Mfk z{WdmwY)XbA28gw!p8X*C=h7y*G|0?BT*(U^CeDkIxK?b$Cml7rp3C-kVuuq5Wp6qKB^# zK`me{E;>5v58Qo;Dm%GF_>o0&#&6Hex5&cbaq^@)zi6tY^PM1K><}i(J6NK^mi~fO zMVvXwHjLL9>d))M3IGP1#B$c+G&EPg^vW7a-EC&*lRKiGC3hrsC49#IUoU_)u9utN zjGMHPMq`;RdDt}YXnQ#CRmrd_BrgN(fCvPWklm^iYbhhUvn(@9Gb8yw_N=M=sUlVl z(atq(9m*wUsqK~@8m|05rrtc7?ezWsf4^tmQ`2cnTb-h|s@kcdLM+i%OIusjE=Y-; z(Aa7V(~a7aw)QneN$rg#*2Wkl*2EqXsudALs>GHA{bfGqe9!s)?HuQR-FIHsbv>W= zbv<5+_=5|ih&D*a-pl`m^ynNWu|&Z!3r`n6r_>QtU`J-9jvTi`?$DL^L|*sU;1Mn! z$(LZ2Iu$2-Zr^IV;S;Mh3S4uuoCS%Mmqc`bq94>d4efvY-(tq~oe2+TqX4;U5-nrK zy>rH^`(5-gcINb8rtz0$p;eqlXX{-UAMR``^l!%=k@QBC(sBYpQH`jPv`ero(Z zN^wJO2RY6U5)+iXcz5>I-=U{(bTzHTvp zE?YkmyIRllpRH9e*b{$_{sRBapbh-w0kT89^{2Pt@j+tw6L$2|29Fm2{p0yidi^bF z(aHjkCqmz;2VkS^G?tb}!g+oTvjaUPlMZl+>p5lC=k%^defi51y^z>tviN>)%@eet z%}n!Ae%n(0=GS?ts$tP5D_j_SbMdF7-sgR3qiDayKgi^F+A1m}Vz^1S3|XP;)EB^N z7*7wr`95Lw5%2dhSC{XlZ23@Py@~Y`Zrs3;|5LkW(&zuQBD!T=J49U+zDLJ|o@s77?R$m?w}>W7-@7yZ8IVs%DZN_v4^A#tnPpSXe~pleV^E;dyG~`tQXX$CUh7SW$H3=_a^#p#bn4gLqu@_ z^6p)rn8mIdRl*w&D~6JHcO{>V{anf3w20&X5hvA&HwyZ^jyx4gHM^h)W(Bhns7q3x z!gCry^MK?k@73OQ>1r6H%a+?{bg)x*n$;t?>q*4ss+xo1skoM^E$1#ANu6Nt9FOJk z%C2*lC)a9J(%}eKTfS;~rKUSM6 zE@iF`;T_jMy& zj>TULyiKg>#jUP~BBC8#IDXtKxjPn!0M3REFca7Jo?c!QEFlXU7h^CAdp_pIb4t0} z@SY~}6+gN>U~Z`G_{1~uwhH`L&k-Y99dP_GGueJGlm30A&hRMOIVxb3@i}Rd0PAHx z-Rt?ggR%J074lrEPqurmiGHaZr-X~ZS2b|1X#ex77Y91b5y_Ib8A)t-Oy_!9|mzi*KX6VNcNimD?>?QUhm);_n`_(wsb&A#O~b^DR>R^ z&xCl8a__;1(HO<;jn*v}*;<>77q~Si`db88Ey~CN4E+@Cj|TeS)y;!hhrDft-MaSo zr?tY44+3Aur`FDn1wE6Q%u5;eDm8+Qp;uDl!RZ}V64Y{Og7Oh4X1!u54V!vqeZZ0b z7FVw;QSMGaSDzTjx3Q*CqWgqc&tgG|IVJ=-1A}DHVwqrWDsxls<)&toal^*qi~{TR z?qKZWGuQWPDS}Di8r}h-08)5LLNIarFC0OXSs5I2=qo)3tKL;gsnwa?7vS42)fjq2TLe zaV^O2@(rbJb@-5=pA)kA<;tdkBYx$ovtAuFSACCYu~i=)8#E`pa#F)xdjFao*zl>8^J1nzs;KwVZ(3vl{9zj8#SF!wlHaivgZoM zK{w1a{Ct|(`r>t#zh|Q4Ya}tS@XH4Le{dP5hX?VK-2>r8(dx`gH6l8QBwT6NTRj#k zT0I03j6d)vuTMgza-0#fWjker_#%hjz*(q|0{99a2L&0r5^|wv(z7WsC4zDnu4IB? zL&@s@M~hnfy{*p^HanZwI}#g`Kc@#P6fxY-7uh0VKVCYu1~zHV74+(BKKTK+&#t9O zz0N>*f+;89ynk0hgQgJv)HUPpNKjMH9CO>6j#np__WB70(@_Cr!Tc!;UmNjf*=gSM z%h#np;jqz!%vGJIBC#c502xs4QGIY(B!~uP zHfRnd{_Yf$=zh9u`E>k`4O-i_Q)q|ZZEyMgJnQJ?A^O6kTr}-&pc?2TSa0N1E3O2g ztJ!!(3A*;=o=cEUHaUXO0`t1+!GaL$+Z*8l#&f8DOwq1MdmA&`_cksKmv%J7ylX=g z*(G(o5wKqPFAUi)_;TH~qFyuGv5PbBkl4yF&EsWMUf@uDe?8Ogb#6pF?J$T>ZC%k{ zcG~BM-FCz0P4v|IXyhm#t61bKr!T#r+s@`al>}#58$kKg1UL1ZrncDR=S6jrDJh7? zmfc!n#NibTgZ@OcdfXl~Dbb3((_aIn9KhTz=>?fDBetA9A_}84$Q>rasO0DAjD8}} zCqh`F(TZ5`o?$8*EMg9vLjXT2MXc+$VxKXJa*s(SX?z9o=OCKMS6+!QoOv z$=~-GFP#xu4!Xi=cY}lKo85;VDgFVSH}L!-K#<%<)|@XQ=bUk*jehpOzODIS@9NF| zh@t;PgvH|p9``lCtP(iQ4#j;9n<$l(;d-=ci_PFq`xnM84uy>n7#xe_OWjDFW*gZh z!)22Xl9)vTlOsyBcJR49&*dRN5oi22_*aodQQ};PG#u4&m0Zz3ohIVag@0&#ow9rj z|Lm&;VZ)~&OG(zC!S>#b#EzNQHHw6O6PS6wE!m+&#WQoUy)u5@LzB z%gGjqt&E02Idb&1)u1?or!)1Mp=;ZgkiJ!pRiVM61KMCg1N3l7KybKF(^^o;|!rPp8W(Rn6k84*@m){91G zH)>lWmVUs$bE;sKIv(!ojbG>5`YY>c_H?<^RR`N}(Z{Gm)_w~gkMxm48rUQoPaRARFP8b9Buc$i?TTR7B!3U!xFUr@rt+-I26w%A}~ z`NqkM#w1=&U4p!IyE1sD0p`^5Wj|Xws8y9+{X@=R>J;1Qx8Y}HG*xp$xxdoj)cCw#$0($p!cVyH9q~Aoi&KiIZ6D1at%yN@rb2mfV8JOI)8$d{fs>04sej!ZJM@mmkzq9b|

4b=i^Ad$U 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

jmyX*%_4t!uwhiQB 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�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 Xae$<=sQI|X@Hu-b;AGRUQMdjNx|Jg% literal 0 HcmV?d00001 diff --git a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md new file mode 100644 index 00000000000..900279c0949 --- /dev/null +++ b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -0,0 +1,250 @@ +--- +slug: migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine +title: "Migrate From Oracle Vault to Openbao on Linode Kubernetes Engine" +description: "Two to three sentences describing your guide." +og_description: "Optional two to three sentences describing your guide when shared on social media. If omitted, the `description` parameter is used within social links." +authors: ["Linode"] +contributors: ["Linode"] +published: 2025-05-01 +keywords: ['list','of','keywords','and key phrases'] +license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)' +external_resources: +- '[Link Title 1](http://www.example.com)' +- '[Link Title 2](http://www.example.net)' +--- + +This guide walks through how to migrate secrets from Oracle Vault to OpenBao running on Linode. + +Oracle Vault is a part of Oracle Cloud Infrastructure (OCI). It provides a secure, managed solution for storing and controlling access to sensitive information—such as API keys, passwords, and encryption keys. Oracle Vault is designed to integrate with other Oracle services, supporting features for key management, secret storage, and cryptographic functions. + +[OpenBao](https://openbao.org/) is an open-source fork of [HashiCorp Vault](https://www.vaultproject.io/) designed to give organizations control over their cryptographic infrastructure. With OpenBao, organizations can deploy, configure, and manage keys and secrets in both cloud and on-premises environments without relying on vendor-managed services. + +Oracle Vault may be used by organizations deeply embedded in Oracle’s ecosystem, prioritizing managed services and compliance within OCI. For organizations needing more flexibility or multi-cloud compatibility, OpenBao’s open-source model helps avoid vendor lock-in, offering community-driven support and cost-effectiveness. + +## Deploy OpenBao on Linode + +When migrating from Oracle Vault to OpenBao on Linode, your requirements will dictate whether to install OpenBao on a single Linode Compute Instance or to pursue a larger scale, more fault tolerant environment with OpenBao on Kubernetes through the Linode Kubernetes Engine (LKE). Follow the appropriate guide based on your requirements: + +* [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) +* [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) +* [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) + +In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your Oracle Cloud account with sufficient permissions to work with Oracle Vault. + +## Migrate from Oracle Vault to OpenBao + +When migrating from Oracle Vault to OpenBao deployed on Linode, begin by determining your existing use cases for Oracle Vault. + +### Assess current secrets management requirements in Oracle Cloud + +Review how your organization uses Oracle Vault. + +For example, you may have an application that uses services from multiple cloud providers, and that application needs access keys to authenticate with those provider services. Security best practices would dictate that you don’t hardcode these sensitive credentials in application source code or images. Instead, the credentials would be injected directly into the deployment at runtime. The application would be granted a role for accessing the credentials in Oracle Vault, which is provided for injection on-the-fly. This keeps the secret safe from being leaked via CI/CD processes or by being checked into a code repository. + +### Review existing secrets + +In the Oracle Vault, find the vault you want to migrate, and review its existing secrets: + +![][image2] + +You can also use the Oracle Cloud CLI (oci) to manage the secrets in your Oracle Vault. First, you will need the ID of the compartment to which the vault belongs. For example, the credentials vault in the image above belongs to the web-application compartment. + +After authenticating the CLI, find the compartment ID with the following command: + +| $ $ oci iam compartment list \--query 'data\[\]\["name","id"\]' \[ \[ "web-application", "ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq" \] \] | +| :---- | + +Find the ID of the compartment with your vault. To [list the secrets in your vaults](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/vault/secret/list.html), run the following command, using the compartment ID: + +| $ oci vault secret list \\ \--compartment-id \\ ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq \\ \--query 'data\[\].\["secret-name","description","id"\]' \[ \[ "cloud\_provider\_a", "Access key ID and secret access key for provider", "ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea" \], \[ "cloud\_provider\_b", "Project ID and project API KEY", "ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqacnhdzfprgd4f4ml7rpkjqmqlyz7p5kjjfinvyn57qdoa" \], \[ "cloud\_provider\_c", "Client ID and client secret", "ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqavn32ibazaqinya5bv3eyc4ndfvebcnksnqk4vl74xqqa" \] \] | +| :---- | + +To retrieve the [value of a secret](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/secrets/secret-bundle/get.html), run the following command, providing the secret ID: + +| $ oci secrets secret-bundle get \\ \--secret-id ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea \\ \--stage CURRENT \\ \--query 'data."secret-bundle-content"' { "content": "eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ==", "content-type": "BASE64" } | +| :---- | + +If the secret bundle content is of type BASE64, then decode it to retrieve the value of the secret. For example: + +| $ echo eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ== \\ | base64 \--decode { "access\_key\_id": "AKIA513J2DDRAXCFKXF5", "secret\_access\_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } | +| :---- | + +To combine secret retrieval with base64 decoding into a single step, run the following command: + +| $ oci secrets secret-bundle get \\ \--secret-id ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea \\ \--stage CURRENT \\ \--query 'data."secret-bundle-content".content' \\ \--raw-output \\ | base64 \--decode { "access\_key\_id": "AKIA513J2DDRAXCFKXF5", "secret\_access\_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } | +| :---- | + +Ensure that you securely handle any exposed secrets, as they will no longer benefit from encryption by Oracle Vault. + +Alternatively, the value of a secret can be viewed in the Oracle Vault UI by selecting the secret, selecting the latest version, and clicking **View Secret Contents**. + +![][image3] + +Oracle Vault doesn’t use the concept of *roles* in a granular way, but it does use identity and access management (IAM) policies to control access. To adopt a permissions approach that uses RBAC in OpenBao, take the following steps: + +1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/), attaching a policy that allows access to these cloud provider credential secrets. +2. Store the credential secrets in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). +3. Verify successful secret access with the API token associated with the AppRole. +4. Assign the AppRole to the applications that need access to these secrets. + +### Authenticate the CLI + +First, ensure that the OpenBao server is running. + +| This guide assumes that the BAO\_ADDR environment variable has been set. If you are working directly on a Linode, then an example value may be http://0.0.0.0:8200. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be http://127.0.0.1:8200. | +| :---- | + +Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with bao login, providing your root token. For example: + +| $ bao login \--method=token s.36Yb3ijEOJbifprhdEiFtPhR WARNING\! The BAO\_TOKEN environment variable is set\! The value of this variable will take precedence; if this is unwanted please unset BAO\_TOKEN or update its value accordingly. Success\! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. Key Value \--- \----- token s.36Yb3ijEOJbifprhdEiFtPhR token\_accessor ykmfH8QV7E1OU86bth3GMCdf token\_duration ∞ token\_renewable false token\_policies \["root"\] identity\_policies \[\] policies \["root"\] | +| :---- | + +### Unseal the OpenBao vault + +OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. + +Before continuing, unseal the OpenBao vault. + +### Create a policy and AppRole + +Creating and using an OpenBao AppRole involves a few steps: + +1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). +2. [Create a policy](https://openbao.org/docs/concepts/policies/). +3. Create an AppRole, attaching the newly created policy. +4. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. +5. Generate an API token for the AppRole. + +Enable the AppRole authentication method with the following CLI command: + +| $ bao auth enable approle Success\! Enabled approle auth method at: approle/ | +| :---- | + +In /etc/openbao, create a new policy file for reading the secret. For example, a new file called cloud-credentials-policy.hcl would have the following contents: + +| path "cloud-credentials/\*" { capabilities \= \["read"\] } | +| :---- | + +This policy grants read permissions to any secrets within the cloud-credentials secrets store path. Add the policy to OpenBao with the following command: + +| $ bao policy write \\ cloud-credentials-policy \\ /etc/openbao/cloud-credentials-policy.hcl Success\! Uploaded policy: cloud-credentials-policy | +| :---- | + +Create an AppRole for the application that will need to access this secret: + +| $ bao write \\ auth/approle/role/cloud-credential-reader-approle \\ token\_policies=cloud-credentials-policy Success\! Data written to: auth/approle/role/cloud-credential-reader-approle | +| :---- | + +Verify that the AppRole was written successfully: + +| $ bao read auth/approle/role/cloud-credential-reader-approle Key Value \--- \----- bind\_secret\_id true local\_secret\_ids false secret\_id\_bound\_cidrs \ secret\_id\_num\_uses 0 secret\_id\_ttl 0s token\_bound\_cidrs \[\] token\_explicit\_max\_ttl 0s token\_max\_ttl 0s token\_no\_default\_policy false token\_num\_uses 0 token\_period 0s token\_policies \[cloud-credentials-secrets-policy\] token\_strictly\_bind\_ip false token\_ttl 0s token\_type default | +| :---- | + +Fetch the AppRole ID with the following command: + +| $ bao read auth/approle/role/cloud-credential-reader-approle/role-id Key Value \--- \----- role\_id c8663988-136f-42de-af40-1dfb94f0c1f6 | +| :---- | + +Generate a secret ID for the role: + +| $ bao write \-f auth/approle/role/cloud-credential-reader-approle/secret-id Key Value \--- \----- secret\_id 9b9c27a3-dc27-4eea-921f-773164ec17c7 secret\_id\_accessor 20abfad4-029f-45e8-a749-ecc041ff3554 secret\_id\_num\_uses 0 secret\_id\_ttl 0s | +| :---- | + +Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. + +| $ bao write auth/approle/login \\ role\_id="c8663988-136f-42de-af40-1dfb94f0c1f6" \\ secret\_id="9b9c27a3-dc27-4eea-921f-773164ec17c7" Key Value \--- \----- token s.Q9n7KPnLKSDoYnVdrHnphEml token\_accessor LkSCfmBQVCfL8s2eX4EfnqO4 token\_duration 768h token\_renewable true token\_policies \["cloud-credentials-secrets-policy" "default"\] identity\_policies \[\] policies \["cloud-credentials-secrets-policy" "default"\] token\_meta\_role\_name cloud-credential-reader-approle | +| :---- | + +The AppRole token (s.Q9n7KPnLKSDoYnVdrHnphEml in the previous example) can be used by a user, machine, or service—such as an infrastructure management application—to authenticate OpenBao API calls, giving the caller authorization to read the cloud provider credentials secrets. + +### Store the secret + +Create the secret store that is defined in the policy. For this example, all secrets will be stored under the api-keys path. Run the following command: + +| $ bao secrets enable \--path=cloud-credentials kv Success\! Enabled the kv secrets engine at: cloud-credentials/ | +| :---- | + +The cloud\_provider\_a secret stored at Oracle Vault was two key-value pairs, stored as JSON: + +| { "access\_key\_id": "AKIA513J2DDRAXCFKXF5", "secret\_access\_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } | +| :---- | + +To store these key-value pairs in OpenBao underneath the cloud-credentials path as a secret named provider\_a, run the following command: + +| $ bao kv put \--mount=cloud-credentials provider-a \\ "access\_key\_id"="AKIA513J2DDRAXCFKXF5" \\ "secret\_access\_key"="XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" Success\! Data written to: cloud-credentials/provider-a | +| :---- | + +### Retrieve the secret + +To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: + +| $ bao kv get \--mount=cloud-credentials provider-a \====== Data \====== Key Value \--- \----- access\_key\_id AKIA513J2DDRAXCFKXF5 secret\_access\_key XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x | +| :---- | + +Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: + +| $ curl \--header "X-Vault-Token: s.Q9n7KPnLKSDoYnVdrHnphEml" \\ \--request GET \\ $BAO\_ADDR/v1/cloud-credentials/provider-a \\ | jq { "request\_id": "92c5026e-bb14-4e2a-8d70-e94fb005183f", "lease\_id": "", "renewable": false, "lease\_duration": 2764800, "data": { "access\_key\_id": "AKIA513J2DDRAXCFKXF5", "secret\_access\_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" }, "wrap\_info": null, "warnings": null, "auth": null } | +| :---- | + +This API token can be used in applications and services to access the cloud provider credentials secrets. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: + +* [Go](https://github.com/hashicorp/vault/tree/main/api) +* [Ruby](https://github.com/hashicorp/vault-ruby) +* [C\#](https://github.com/rajanadar/VaultSharp) +* [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) +* [Kotlin](https://github.com/kunickiaj/vault-kotlin) +* [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) +* [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) +* [Python](https://github.com/hvac/hvac) + +### Convert existing secrets from Oracle Vault to OpenBao + +The above steps outline how to migrate a single secret stored in Oracle Vault to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in Oracle Vault involves iterating on the following process: + +1. Retrieve the secret in Oracle Vault. +2. Determine which entities (users, machines, and services) need read or write access to that secret. +3. Create a permissions policy and attach it to an AppRole in OpenBao. +4. Generate an API token for the AppRole. +5. Update any entity code or configurations to use the API token to access the secret in OpenBao. + +## Production Considerations + +When migrating from Oracle Vault to OpenBao on Linode, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. + +### Security + +For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. + +* **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +* **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +* **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +* **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. + +### High availability + +For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. + +* **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +* **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +* **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. + +The resources below are provided to help you become familiar with OpenBao when migrating from Oracle Vault to Linode. + +## Additional Resources + +* Oracle Cloud + * [Vault Documentation](https://docs.oracle.com/en-us/iaas/Content/KeyManagement/Concepts/keyoverview.htm) + * [oci CLI Documentation](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm) +* OpenBao + * [Configuration Documentation](https://openbao.org/docs/configuration/) + * High Availability + * [Architectural Internals](https://openbao.org/docs/internals/high-availability/) + * [Detailed Concepts](https://openbao.org/docs/concepts/ha/) + * [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) + * [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages +* Linode + * [Documentation](https://www.linode.com/docs/) + * [Linode Cloud Manager](https://cloud.linode.com/) + * [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) + * [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) + * [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file From a5a42e30769a29efa1de00e20983121f572f411b Mon Sep 17 00:00:00 2001 From: Adam Overa Date: Thu, 1 May 2025 19:14:01 -0400 Subject: [PATCH 2/8] Layout Edit #1 --- .../index.md | 406 ++++++++++++----- .../index.md | 365 ++++++++++----- .../index.md | 364 ++++++++++----- .../index.md | 418 +++++++++++++----- 4 files changed, 1119 insertions(+), 434 deletions(-) diff --git a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md index 02402c9ad08..8b0ccc4e148 100644 --- a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,10 +1,9 @@ --- slug: migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine -title: "Migrate From Aws Secrets Manager to Openbao on Linode Kubernetes Engine" +title: "Migrate From AWS Secrets Manager to OpenBao on Linode Kubernetes Engine" description: "Two to three sentences describing your guide." -og_description: "Optional two to three sentences describing your guide when shared on social media. If omitted, the `description` parameter is used within social links." -authors: ["Linode"] -contributors: ["Linode"] +authors: ["Akamai"] +contributors: ["Akamai"] published: 2025-05-01 keywords: ['list','of','keywords','and key phrases'] license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)' @@ -23,9 +22,9 @@ An organization may choose to migrate from AWS Secrets Manager to OpenBao when i When migrating from AWS Secrets Manager to OpenBao on Linode, your requirements will dictate whether to install OpenBao on a single Linode Compute Instance or to pursue a larger scale, more fault tolerant environment with OpenBao on Kubernetes through the Linode Kubernetes Engine (LKE). Follow the appropriate guide based on your requirements: -* [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) -* [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -* [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) +- [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) +- [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) +- [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your AWS account with sufficient permissions to work with AWS Secrets Manager. @@ -33,31 +32,56 @@ In addition to the prerequisites needed for either of the above deployment metho When migrating from AWS Secrets Manager to OpenBao deployed on Linode, begin by determining your existing use cases for AWS Secrets Manager. -### Assess current secrets management requirements in AWS +### Assess Current Secrets Management Requirements in AWS Review how your organization uses AWS Secrets Manager. For example, you may have a web application with a corresponding database dependency. Security best practices would dictate that you don’t hardcode secrets—such as database credentials—in the deployed application image or in the source code itself. Instead, the secrets would be injected directly into the deployment at runtime. The application would be granted a role for accessing the credentials in AWS Secrets Manager, which is provided for injection on-the-fly. This keeps the secret safe from being leaked via CI/CD processes or by being checked into a code repository. -### Review existing secrets +### Review Existing Secrets In the AWS Secrets Manager dashboard, review your existing secrets. -![][image2] +![](image1.png) Alternatively, using the AWS CLI can quickly provide insight into existing secrets and their usage. To list all secrets, run the following command: -| $ aws secretsmanager list-secrets \--query 'SecretList\[\*\].Name' \[ "psql-credentials", "jwt-signing-secret", "shipping\_service\_api\_key" \] | -| :---- | - -To retrieve the secret value for a specific secret, use the secret name with the get-secret-value command. For example: - -| $ aws secretsmanager get-secret-value \\ \--secret-id psql-credentials \\ \--query SecretString \\ \--output text \\ | jq { "username": "psqluser", "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs\!m$TudDxEe\#", "engine": "postgres", "host": "psql.example-cloud.com", "port": "5432", "dbname": "web\_app\_production" } | -| :---- | - -In AWS Secrets Manager, secrets are stored either as key/value pairs or as plaintext. In the previous example, the single psql-credentials secret is a set of key/value pairs. Ensure that you securely handle any exposed secrets, as they will no longer benefit from encryption by AWS Secrets Manager. - -AWS Secrets Manager uses AWS IAM to control access to secrets. As an example that adopts role-based access control (RBAC), a role such as DatabaseReader might have a policy attached that allows the secretsmanager:GetSecretValue action on the psql-credentials resource. Then, the web application that accesses the database would be given the DatabaseReader role so that it can obtain the secret values which would allow it to connect to the database. +```command +aws secretsmanager list-secrets --query 'SecretList[*].Name' +``` + +```output +[ + "psql-credentials", + "jwt-signing-secret", + "shipping_service_api_key" +] +``` + +To retrieve the secret value for a specific secret, use the secret name with the `get-secret-value` command. For example: + +```command +aws secretsmanager get-secret-value \ + --secret-id psql-credentials \ + --query SecretString \ + --output text \ + | jq +``` + +```output +{ + "username": "psqluser", + "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs!m$TudDxEe#", + "engine": "postgres", + "host": "psql.example-cloud.com", + "port": "5432", + "dbname": "web_app_production" +} +``` + +In AWS Secrets Manager, secrets are stored either as key/value pairs or as plaintext. In the previous example, the single `psql-credentials` secret is a set of key/value pairs. Ensure that you securely handle any exposed secrets, as they will no longer benefit from encryption by AWS Secrets Manager. + +AWS Secrets Manager uses AWS IAM to control access to secrets. As an example that adopts role-based access control (RBAC), a role such as `DatabaseReader` might have a policy attached that allows the `secretsmanager:GetSecretValue` action on the `psql-credentials` resource. Then, the web application that accesses the database would be given the `DatabaseReader` role so that it can obtain the secret values which would allow it to connect to the database. Replicating this setup using OpenBao will involve creating an [application role (AppRole)](https://openbao.org/docs/auth/approle/) to take the place of the AWS IAM role so that applications can use an API token associated with the AppRole to authenticate requests for the secret. @@ -65,133 +89,297 @@ Replicating this setup using OpenBao will involve creating an [application role First, ensure that the OpenBao server is running. -| This guide assumes that the BAO\_ADDR environment variable has been set. If you are working directly on a Linode, then an example value may be http://0.0.0.0:8200. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be http://127.0.0.1:8200. | -| :---- | +{{< note >}} +This guide assumes that the `BAO_ADDR` environment variable has been set. If you are working directly on a Linode, then an example value may be `http://0.0.0.0:8200`. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be `http://127.0.0.1:8200`. +{{< /note >}} -Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with bao login, providing your root token. For example: +Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with `bao login`, providing your root token. For example: -| $ bao login \--method=token s.36Yb3ijEOJbifprhdEiFtPhR WARNING\! The BAO\_TOKEN environment variable is set\! The value of this variable will take precedence; if this is unwanted please unset BAO\_TOKEN or update its value accordingly. Success\! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. Key Value \--- \----- token s.36Yb3ijEOJbifprhdEiFtPhR token\_accessor ykmfH8QV7E1OU86bth3GMCdf token\_duration ∞ token\_renewable false token\_policies \["root"\] identity\_policies \[\] policies \["root"\] | -| :---- | +```command +bao login --method=token s.36Yb3ijEOJbifprhdEiFtPhR +``` -### Unseal the OpenBao vault +```output +WARNING! The BAO_TOKEN environment variable is set! The value of this variable will take precedence; if this is unwanted please unset BAO_TOKEN or update its value accordingly. + +Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. + +Key Value +--- ----- +token s.36Yb3ijEOJbifprhdEiFtPhR +token_accessor ykmfH8QV7E1OU86bth3GMCdf +token_duration ∞ +token_renewable false +token_policies ["root"] +identity_policies [] +policies ["root"] +``` + +### Unseal the OpenBao Vault OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. Before continuing, unseal the OpenBao vault. With unseal keys in hand, run the following command as many times as necessary to reach quorum (default is three), using a different unseal key for each execution: -| $ bao operator unseal Unseal Key (will be hidden): \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* | -| :---- | +```command +bao operator unseal +``` + +```output +Unseal Key (will be hidden): ******************************************** +``` After quorum has been reached, the OpenBao status will show the following: -| Key Value \--- \----- Seal Type shamir Initialized true Sealed false … | -| :---- | +```output +Key Value +--- ----- +Seal Type shamir +Initialized true +Sealed false +... +``` -### Create a policy and AppRole +### Create a Policy and AppRole Creating and using an OpenBao AppRole involves a few steps. -#### Step \#1: Enable AppRole +#### Step #1: Enable AppRole [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1) with the following CLI command: -| $ bao auth enable approle Success\! Enabled approle auth method at: approle/ | -| :---- | +```command +bao auth enable approle +``` -#### Step \#2: Create a policy +```output +Success! Enabled approle auth method at: approle/ +``` -In /etc/openbao, [create a new policy](https://openbao.org/docs/concepts/policies/) file for reading the secret. For example, a new file called db-secrets-policy.hcl would have the following contents: +#### Step #2: Create a Policy -| path "database-credentials/\*" { capabilities \= \["read"\] } | -| :---- | +In `/etc/openbao`, [create a new policy](https://openbao.org/docs/concepts/policies/) file for reading the secret. For example, a new file called `db-secrets-policy.hcl` would have the following contents: -This policy grants read permissions to any secrets within the database-credentials secrets store path. Add the policy to OpenBao with the following command: +```file {title="db-secrets-policy.hcl"} +path "database-credentials/*" { + capabilities = ["read"] +} +``` -| $ bao policy write db-secrets-policy /etc/openbao/db-secrets-policy.hcl Success\! Uploaded policy: db-secrets-policy | -| :---- | +This policy grants read permissions to any secrets within the `database-credentials` secrets store path. Add the policy to OpenBao with the following command: -#### Step \#3: Create an AppRole with policy attached +```command +bao policy write db-secrets-policy /etc/openbao/db-secrets-policy.hcl +``` + +```output +Success! Uploaded policy: db-secrets-policy +``` + +#### Step #3: Create an AppRole with Policy Attached Create an AppRole for the application that will need to access this secret: -| $ bao write \\ auth/approle/role/web-app-approle \\ token\_policies=db-secrets-policy Success\! Data written to: auth/approle/role/web-app-approle | -| :---- | +```command +bao write \ + auth/approle/role/web-app-approle \ + token_policies=db-secrets-policy +``` + +```output +Success! Data written to: auth/approle/role/web-app-approle +``` Verify that the AppRole was written successfully: -| $ bao read auth/approle/role/web-app-approle Key Value \--- \----- bind\_secret\_id true local\_secret\_ids false secret\_id\_bound\_cidrs \ secret\_id\_num\_uses 0 secret\_id\_ttl 0s token\_bound\_cidrs \[\] token\_explicit\_max\_ttl 0s token\_max\_ttl 0s token\_no\_default\_policy false token\_num\_uses 0 token\_period 0s token\_policies \[db-secrets-policy\] token\_strictly\_bind\_ip false token\_ttl 0s token\_type default | -| :---- | +```command +bao read auth/approle/role/web-app-approle +``` + +```output +Key Value +--- ----- +bind_secret_id true +local_secret_ids false +secret_id_bound_cidrs +secret_id_num_uses 0 +secret_id_ttl 0s +token_bound_cidrs [] +token_explicit_max_ttl 0s +token_max_ttl 0s +token_no_default_policy false +token_num_uses 0 +token_period 0s +token_policies [db-secrets-policy] +token_strictly_bind_ip false +token_ttl 0s +token_type default +``` Fetch the AppRole ID with the following command: -| $ bao read auth/approle/role/web-app-approle/role-id Key Value \--- \----- role\_id 1d41b8be-03d2-6f61-702d-1731c957fd13 | -| :---- | +```command +bao read auth/approle/role/web-app-approle/role-id +``` + +```output +Key Value +--- ----- +role_id 1d41b8be-03d2-6f61-702d-1731c957fd13 +``` -#### Step \#4: Generate secret ID +#### Step #4: Generate secret ID Generate a secret ID for the role: -| $ bao write \-f auth/approle/role/web-app-approle/secret-id Key Value \--- \----- secret\_id 4eb6e604-681c-3fc3-bedd-a2dc774955bb secret\_id\_accessor fe899dc6-85f7-f596-fb93-3c961f7919a9 secret\_id\_num\_uses 0 secret\_id\_ttl 0s | -| :---- | +```command +bao write -f auth/approle/role/web-app-approle/secret-id +``` -#### Step \#5: Generate API token +```output +Key Value +--- ----- +secret_id 4eb6e604-681c-3fc3-bedd-a2dc774955bb +secret_id_accessor fe899dc6-85f7-f596-fb93-3c961f7919a9 +secret_id_num_uses 0 +secret_id_ttl 0s +``` -Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. +#### Step #5: Generate API token -| $ bao write auth/approle/login \\ role\_id="1d41b8be-03d2-6f61-702d-1731c957fd13" \\ secret\_id="4eb6e604-681c-3fc3-bedd-a2dc774955bb" Key Value \--- \----- token s.kpKsgWNtYLAktRYQT4BiMVMy token\_accessor Rwlq5EmvrHC8VvvHwoRyJzUh token\_duration 768h token\_renewable true token\_policies \["db-secrets-policy" "default"\] identity\_policies \[\] policies \["db-secrets-policy" "default"\] token\_meta\_role\_name web-app-approle | -| :---- | +Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. -The AppRole token (s.kpKsgWNtYLAktRYQT4BiMVMy in the previous example) can be used by a user, machine, or service—such a web application—to authenticate OpenBao API calls, giving the caller authorization to read the database credential secret. +```command +bao write auth/approle/login \ + role_id="1d41b8be-03d2-6f61-702d-1731c957fd13" \ + secret_id="4eb6e604-681c-3fc3-bedd-a2dc774955bb" +``` -### Store the secret +```output +Key Value +--- ----- +token s.kpKsgWNtYLAktRYQT4BiMVMy +token_accessor Rwlq5EmvrHC8VvvHwoRyJzUh +token_duration 768h +token_renewable true +token_policies ["db-secrets-policy" "default"] +identity_policies [] +policies ["db-secrets-policy" "default"] +token_meta_role_name web-app-approle +``` -Create the secret store that is defined in the policy. For this example, all secrets will be stored under the database-credentials path. Run the following command: +The AppRole token (`s.kpKsgWNtYLAktRYQT4BiMVMy` in the previous example) can be used by a user, machine, or service—such a web application—to authenticate OpenBao API calls, giving the caller authorization to read the database credential secret. -| $ bao secrets enable \--path=database-credentials kv Success\! Enabled the kv secrets engine at: database-credentials/ | -| :---- | +### Store the Secret -The database secret stored at AWS Secrets Manager had the following form: +Create the secret store that is defined in the policy. For this example, all secrets will be stored under the `database-credentials` path. Run the following command: -| { "username": "psqluser", "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs\!m$TudDxEe\#", "engine": "postgres", "host": "psql.example-cloud.com", "port": "5432", "dbname": "web\_app\_production" } | -| :---- | +```command +bao secrets enable --path=database-credentials kv +``` -To store these key-value pairs in OpenBao underneath the database-credentials path as a secret named psql, run the following command: +```output +Success! Enabled the kv secrets engine at: database-credentials/ +``` -| $ bao kv put \--mount=database-credentials psql \\ "username"="psqluser" \\ "password"="W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#" \\ "engine"="postgres" \\ "host"="psql.example-cloud.com" \\ "port"="5432" \\ "dbname"="web\_app\_production" Success\! Data written to: database-credentials/psql | -| :---- | +The database secret stored at AWS Secrets Manager had the following form: -### Retrieve the secret +``` +{ + "username": "psqluser", + "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs!m$TudDxEe#", + "engine": "postgres", + "host": "psql.example-cloud.com", + "port": "5432", + "dbname": "web_app_production" +} +``` + +To store these key-value pairs in OpenBao underneath the `database-credentials` path as a secret named `psql`, run the following command: + +```command +bao kv put --mount=database-credentials psql \ + "username"="psqluser" \ + "password"="W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#" \ + "engine"="postgres" \ + "host"="psql.example-cloud.com" \ + "port"="5432" \ + "dbname"="web_app_production" +``` + +```output +Success! Data written to: database-credentials/psql +``` + +### Retrieve the Secret To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: -| $ bao kv get \--mount=database-credentials psql \====== Data \====== Key Value \--- \----- dbname web\_app\_production engine postgres host psql.example-cloud.com password W0H@Z52IGI0VjqoGS3xMkJ9SO533w.vault-tokenTudDxEe\# port 5432 username psqluser | -| :---- | +```command +bao kv get --mount=database-credentials psql +``` + +```output +====== Data ====== +Key Value +--- ----- +dbname web_app_production +engine postgres +host psql.example-cloud.com +password W0H@Z52IGI0VjqoGS3xMkJ9SO533w.vault-tokenTudDxEe\# +port 5432 +username psqluser +``` Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: -| $ curl \--header "X-Vault-Token: s.kpKsgWNtYLAktRYQT4BiMVMy" \\ \--request GET \\ $BAO\_ADDR/v1/database-credentials/psql \\ | jq { "request\_id": "00237a0b-4349-351d-50a0-ef127534ed18", "lease\_id": "", "renewable": false, "lease\_duration": 2764800, "data": { "dbname": "web\_app\_production", "engine": "postgres", "host": "psql.example-cloud.com", "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w.vault-tokenTudDxEe\#", "port": "5432", "username": "psqluser" }, "wrap\_info": null, "warnings": null, "auth": null } | -| :---- | +```command +curl --header "X-Vault-Token: s.kpKsgWNtYLAktRYQT4BiMVMy" \ + --request GET \ + $BAO_ADDR/v1/database-credentials/psql \ + | jq +``` + +```output +{ + "request_id": "00237a0b-4349-351d-50a0-ef127534ed18", + "lease_id": "", + "renewable": false, + "lease_duration": 2764800, + "data": { + "dbname": "web_app_production", + "engine": "postgres", + "host": "psql.example-cloud.com", + "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w.vault-tokenTudDxEe#", + "port": "5432", + "username": "psqluser" + }, + "wrap_info": null, + "warnings": null, + "auth": null +} +``` This API token can be used in applications and services to access the database credentials. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: -* [Go](https://github.com/hashicorp/vault/tree/main/api) -* [Ruby](https://github.com/hashicorp/vault-ruby) -* [C\#](https://github.com/rajanadar/VaultSharp) -* [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) -* [Kotlin](https://github.com/kunickiaj/vault-kotlin) -* [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) -* [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) -* [Python](https://github.com/hvac/hvac) +- [Go](https://github.com/hashicorp/vault/tree/main/api) +- [Ruby](https://github.com/hashicorp/vault-ruby) +- [C#](https://github.com/rajanadar/VaultSharp) +- [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) +- [Kotlin](https://github.com/kunickiaj/vault-kotlin) +- [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) +- [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) +- [Python](https://github.com/hvac/hvac) -### Convert existing secrets from AWS Secrets Manager to OpenBao +### Convert Existing Secrets from AWS Secrets Manager to OpenBao The above steps outline how to migrate a single secret stored in AWS Secrets Manager to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in AWS Secrets Manager involves iterating on the following process: -1. Retrieve the secret in AWS. -2. Determine which entities (users, machines, and services) need read or write access to that secret. -3. Create a permissions policy and attach it to an AppRole in OpenBao. -4. Generate an API token for the AppRole. -5. Update any entity code or configurations to use the API token to access the secret in OpenBao. +1. Retrieve the secret in AWS. +1. Determine which entities (users, machines, and services) need read or write access to that secret. +1. Create a permissions policy and attach it to an AppRole in OpenBao. +1. Generate an API token for the AppRole. +1. Update any entity code or configurations to use the API token to access the secret in OpenBao. ## Production Considerations @@ -201,35 +389,35 @@ When migrating from AWS Secrets Manager to OpenBao on Linode, it's important to For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. -* **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. -* **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. -* **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. -* **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. +- **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +- **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +- **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +- **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. -### High availability +### High Availability For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. -* **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. -* **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -* **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. +- **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +- **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. The resources below are provided to help you become familiar with OpenBao when migrating from AWS Secrets Manager to Linode. ## Additional Resources -* AWS - * [Secrets Manager Documentation](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) -* OpenBao - * [Configuration Documentation](https://openbao.org/docs/configuration/) - * High Availability - * [Architectural Internals](https://openbao.org/docs/internals/high-availability/) - * [Detailed Concepts](https://openbao.org/docs/concepts/ha/) - * [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) - * [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages -* Linode - * [Documentation](https://www.linode.com/docs/) - * [Linode Cloud Manager](https://cloud.linode.com/) - * [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - * [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) - * [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file +- AWS + - [Secrets Manager Documentation](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) +- OpenBao + - [Configuration Documentation](https://openbao.org/docs/configuration/) + - High Availability + - [Architectural Internals](https://openbao.org/docs/internals/high-availability/) + - [Detailed Concepts](https://openbao.org/docs/concepts/ha/) + - [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) + - [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages +- Linode + - [Documentation](https://www.linode.com/docs/) + - [Linode Cloud Manager](https://cloud.linode.com/) + - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) + - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) + - [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md index 445863ceff0..30c5e9c677c 100644 --- a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,10 +1,9 @@ --- slug: migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine -title: "Migrate From Azure Key Vault to Openbao on Linode Kubernetes Engine" +title: "Migrate From Azure Key Vault to OpenBao on Linode Kubernetes Engine" description: "Two to three sentences describing your guide." -og_description: "Optional two to three sentences describing your guide when shared on social media. If omitted, the `description` parameter is used within social links." -authors: ["Linode"] -contributors: ["Linode"] +authors: ["Akamai"] +contributors: ["Akamai"] published: 2025-05-01 keywords: ['list','of','keywords','and key phrases'] license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)' @@ -25,9 +24,9 @@ For organizations needing customization, OpenBao’s open-source model provides When migrating from Azure Key Vault to OpenBao on Linode, your requirements will dictate whether to install OpenBao on a single Linode Compute Instance or to pursue a larger scale, more fault tolerant environment with OpenBao on Kubernetes through the Linode Kubernetes Engine (LKE). Follow the appropriate guide based on your requirements: -* [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) -* [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -* [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) +- [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) +- [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) +- [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your Microsoft Azure account with sufficient permissions to work with Azure Key Vault. @@ -35,165 +34,319 @@ In addition to the prerequisites needed for either of the above deployment metho When migrating from Azure Key Vault to OpenBao deployed on Linode, begin by determining your existing use cases for Azure Key Vault. -### Assess current secrets management requirements in Microsoft Azure +### Assess Current Secrets Management Requirements in Microsoft Azure Review how your organization uses Azure Key Vault. For example, you may have an application which uses third-party services—such as an LLM platform or a digital payments process—and you use API keys to authenticate requests to those services. Security best practices would dictate that you don’t hardcode API keys in application source code or images. Instead, the API key would be injected directly into the deployment at runtime. The application would be granted a role for accessing the API key in Azure Key Vault, which is provided for injection on-the-fly. This keeps the secret safe from being leaked via CI/CD processes or by being checked into a code repository. -### Review existing secrets +### Review Existing Secrets -In the Azure Key Vault dashboard, review your existing secrets. -![][image2] +In the Azure Key Vault dashboard, review your existing secrets. -You can also use the Azure CLI (az) to manage the secrets in your key vault. After authenticating the CLI, [list the secrets in your vault](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-list) by providing the name of your vault. For example: +![](image1.png) -| $ az keyvault secret list \\ \--vault-name "my-app-vault" \\ \--query "\[\].name" \[ "github-deploy-key", "LLM-service-key", "payments-service-dev-key", "telemetry-export-api-key" \] | -| :---- | +You can also use the Azure CLI (`az`) to manage the secrets in your key vault. After authenticating the CLI, [list the secrets in your vault](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-list) by providing the name of your vault. For example: + +```command +az keyvault secret list \ + --vault-name "my-app-vault" \ + --query "\[\].name" +``` + +```output +[ + "github-deploy-key", + "LLM-service-key", + "payments-service-dev-key", + "telemetry-export-api-key" +] +``` To see the [value of a single secret](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-show), run the following command, providing the names of the vault and the secret. -| $ az keyvault secret show \\ \--vault-name "my-app-vault" \\ \--name "LLM-service-key" \\ \--query "value" "0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP" | -| :---- | +```command +az keyvault secret show \ + --vault-name "my-app-vault" \ + --name "LLM-service-key" \ + --query "value" +``` + +```output +"0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP" +``` Ensure that you securely handle any exposed secrets, as they will no longer benefit from encryption by Azure Key Vault. Alternatively, the value of a secret can be viewed in the Azure Key Vault UI by selecting the secret, selecting the latest version, and clicking **Show Secret Value**. -![][image3] +![](image2.png) -Azure uses IAM with role based access control (RBAC) to manage access to a particular secret. For example, an Azure VM within your Resource Group might run the application workload which needs access to the LLM service API key stored within your vault. The VM would be assigned the [Key Vault Secrets User role](https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-guide?tabs=azure-cli#azure-built-in-roles-for-key-vault-data-plane-operations), allowing it to read the contents of secrets in the vault. +Azure uses IAM with role based access control (RBAC) to manage access to a particular secret. For example, an Azure VM within your Resource Group might run the application workload which needs access to the LLM service API key stored within your vault. The VM would be assigned the [`Key Vault Secrets User role`](https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-guide?tabs=azure-cli#azure-built-in-roles-for-key-vault-data-plane-operations), allowing it to read the contents of secrets in the vault. To view access settings, navigate to **Access control (IAM)** within your vault, then click the **Role assignments** tab. -![][image4] +![](image3.png) Replicating this setup using OpenBao involves the following steps: -1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/) that will take the place of the Azure IAM role. -2. Store the LLM service API key in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). -3. Verify successful secret access with the API token associated with the AppRole. -4. Assign the AppRole to the applications that need access to the secret. +1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/) that will take the place of the Azure IAM role. +1. Store the LLM service API key in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). +1. Verify successful secret access with the API token associated with the AppRole. +1. Assign the AppRole to the applications that need access to the secret. ### Authenticate the CLI First, ensure that the OpenBao server is running. -| This guide assumes that the BAO\_ADDR environment variable has been set. If you are working directly on a Linode, then an example value may be http://0.0.0.0:8200. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be http://127.0.0.1:8200. | -| :---- | +{{< note >}} +This guide assumes that the `BAO_ADDR` environment variable has been set. If you are working directly on a Linode, then an example value may be `http://0.0.0.0:8200`. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be `http://127.0.0.1:8200`. +{{< /note >}} + +Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with `bao login`, providing your root token. For example: -Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with bao login, providing your root token. For example: +```command +bao login --method=token s.36Yb3ijEOJbifprhdEiFtPhR +``` -| $ bao login \--method=token s.36Yb3ijEOJbifprhdEiFtPhR WARNING\! The BAO\_TOKEN environment variable is set\! The value of this variable will take precedence; if this is unwanted please unset BAO\_TOKEN or update its value accordingly. Success\! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. Key Value \--- \----- token s.36Yb3ijEOJbifprhdEiFtPhR token\_accessor ykmfH8QV7E1OU86bth3GMCdf token\_duration ∞ token\_renewable false token\_policies \["root"\] identity\_policies \[\] policies \["root"\] | -| :---- | +```output +WARNING! The BAO_TOKEN environment variable is set! The value of this variable will take precedence; if this is unwanted please unset BAO_TOKEN or update its value accordingly. -### Unseal the OpenBao vault +Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. + +Key Value +--- ----- +token s.36Yb3ijEOJbifprhdEiFtPhR +token_accessor ykmfH8QV7E1OU86bth3GMCdf +token_duration ∞ +token_renewable false +token_policies ["root"] +identity_policies [] +policies ["root"] +``` + +### Unseal the OpenBao Vault OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. Before continuing, unseal the OpenBao vault. -### Create a policy and AppRole +### Create a Policy and AppRole Creating and using an OpenBao AppRole involves a few steps: -1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). -2. [Create a policy](https://openbao.org/docs/concepts/policies/). -3. Create an AppRole, attaching the newly created policy. -4. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. -5. Generate an API token for the AppRole. +1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). +1. [Create a policy](https://openbao.org/docs/concepts/policies/). +1. Create an AppRole, attaching the newly created policy. +1. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. +1. Generate an API token for the AppRole. Enable the AppRole authentication method with the following CLI command: -| $ bao auth enable approle Success\! Enabled approle auth method at: approle/ | -| :---- | +```command +bao auth enable approle +``` + +```output +Success! Enabled approle auth method at: approle/ +``` + +In `/etc/openbao`, create a new policy file for reading the secret. For example, a new file called `api-keys-secrets-policy.hcl` would have the following contents: -In /etc/openbao, create a new policy file for reading the secret. For example, a new file called api-keys-secrets-policy.hcl would have the following contents: +```file {title="api-keys-secrets-policy.hcl"} +path "api-keys/*" { + capabilities = ["read"] +} +``` -| path "api-keys/\*" { capabilities \= \["read"\] } | -| :---- | +This policy grants read permissions to any secrets within the `api-keys` secrets store path. Add the policy to OpenBao with the following command: -This policy grants read permissions to any secrets within the api-keys secrets store path. Add the policy to OpenBao with the following command: +```command +bao policy write \ + api-keys-secrets-policy \ + /etc/openbao/api-keys-secrets-policy.hcl +``` -| $ bao policy write \\ api-keys-secrets-policy \\ /etc/openbao/api-keys-secrets-policy.hcl Success\! Uploaded policy: api-keys-secrets-policy | -| :---- | +```output +Success! Uploaded policy: api-keys-secrets-policy +``` Create an AppRole for the application that will need to access this secret: -| $ bao write \\ auth/approle/role/api-key-reader-approle \\ token\_policies=api-keys-secrets-policy Success\! Data written to: auth/approle/role/api-key-reader-approle | -| :---- | +```command +bao write \ + auth/approle/role/api-key-reader-approle \ + token_policies=api-keys-secrets-policy +``` + +```output +Success! Data written to: auth/approle/role/api-key-reader-approle +``` Verify that the AppRole was written successfully: -| $ bao read auth/approle/role/api-key-reader-approle Key Value \--- \----- bind\_secret\_id true local\_secret\_ids false secret\_id\_bound\_cidrs \ secret\_id\_num\_uses 0 secret\_id\_ttl 0s token\_bound\_cidrs \[\] token\_explicit\_max\_ttl 0s token\_max\_ttl 0s token\_no\_default\_policy false token\_num\_uses 0 token\_period 0s token\_policies \[api-keys-secrets-policy\] token\_strictly\_bind\_ip false token\_ttl 0s token\_type default | -| :---- | +```command +bao read auth/approle/role/api-key-reader-approle +``` + +```output +Key Value +--- ----- +bind_secret_id true +local_secret_ids false +secret_id_bound_cidrs +secret_id_num_uses 0 +secret_id_ttl 0s +token_bound_cidrs [] +token_explicit_max_ttl 0s +token_max_ttl 0s +token_no_default_policy false +token_num_uses 0 +token_period 0s +token_policies [api-keys-secrets-policy] +token_strictly_bind_ip false +token_ttl 0s +token_type default +``` Fetch the AppRole ID with the following command: -| $ bao read auth/approle/role/api-key-reader-approle/role-id Key Value \--- \----- role\_id e633701e-893e-460d-8012-ea2afedbcd87 | -| :---- | +```command +bao read auth/approle/role/api-key-reader-approle/role-id +``` + +```output +Key Value +--- ----- +role_id e633701e-893e-460d-8012-ea2afedbcd87 +``` Generate a secret ID for the role: -| $ bao write \-f auth/approle/role/api-key-reader-approle/secret-id Key Value \--- \----- secret\_id 725d9076-5a5c-4921-98f7-7535c767386a secret\_id\_accessor b780e4d6-a2f2-4e03-8843-3e6a88b56f09 secret\_id\_num\_uses 0 secret\_id\_ttl 0s | -| :---- | +```command +bao write -f auth/approle/role/api-key-reader-approle/secret-id +``` + +```output +Key Value +--- ----- +secret_id 725d9076-5a5c-4921-98f7-7535c767386a +secret_id_accessor b780e4d6-a2f2-4e03-8843-3e6a88b56f09 +secret_id_num_uses 0 +secret_id_ttl 0s +``` Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. -| $ bao write auth/approle/login \\ role\_id="e633701e-893e-460d-8012-ea2afedbcd87" \\ secret\_id="725d9076-5a5c-4921-98f7-7535c767386a" Key Value \--- \----- token s.TuQBY39kkpEDOqKcKYbWvpmZ token\_accessor N1qSJiqOz6mXlpbmFVT2LOfS token\_duration 768h token\_renewable true token\_policies \["api-keys-secrets-policy" "default"\] identity\_policies \[\] policies \["api-keys-secrets-policy" "default"\] token\_meta\_role\_name api-key-reader-approle | -| :---- | +```command +bao write auth/approle/login \ + role_id="e633701e-893e-460d-8012-ea2afedbcd87" \ + secret_id="725d9076-5a5c-4921-98f7-7535c767386a" +``` + +```output +Key Value +--- ----- +token s.TuQBY39kkpEDOqKcKYbWvpmZ +token_accessor N1qSJiqOz6mXlpbmFVT2LOfS +token_duration 768h +token_renewable true +token_policies ["api-keys-secrets-policy" "default"] +identity_policies [] +policies ["api-keys-secrets-policy" "default"] +token_meta_role_name api-key-reader-approle +``` -The AppRole token (s.TuQBY39kkpEDOqKcKYbWvpmZ in the previous example) can be used by a user, machine, or service—such as a web application—to authenticate OpenBao API calls, giving the caller authorization to read the LLM service API key secret. +The AppRole token (`s.TuQBY39kkpEDOqKcKYbWvpmZ` in the previous example) can be used by a user, machine, or service—such as a web application—to authenticate OpenBao API calls, giving the caller authorization to read the LLM service API key secret. -### Store the secret +### Store the Secret -Create the secret store that is defined in the policy. For this example, all secrets will be stored under the api-keys path. Run the following command: +Create the secret store that is defined in the policy. For this example, all secrets will be stored under the `api-keys` path. Run the following command: -| $ bao secrets enable \--path=api-keys kv Success\! Enabled the kv secrets engine at: api-keys/ | -| :---- | +```command +bao secrets enable --path=api-keys kv +``` + +```output +Success! Enabled the kv secrets engine at: api-keys/ +``` The LLM service API key secret stored at Azure Key Vault was a simple string: -| 0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP | -| :---- | +``` +0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP +``` + +To store this as a key-value pair in OpenBao underneath the `api-keys` path as a secret named `llm-service`, run the following command: -To store this as a key-value pair in OpenBao underneath the api-keys path as a secret named llm-service, run the following command: +```command +bao kv put --mount=api-keys llm-service \ + "key"="0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP" +``` -| $ bao kv put \--mount=api-keys llm-service \\ "key"="0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP" Success\! Data written to: api-keys/llm-service | -| :---- | +```output +Success! Data written to: api-keys/llm-service +``` -### Retrieve the secret +### Retrieve the Secret To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: -| $ bao kv get \--mount=api-keys llm-service \====== Data \====== Key Value \--- \----- key 0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP | -| :---- | +```command +bao kv get --mount=api-keys llm-service +``` + +```output +====== Data ====== +Key Value +--- ----- +key 0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP +``` Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: -| $ curl \--header "X-Vault-Token: s.TuQBY39kkpEDOqKcKYbWvpmZ" \\ \--request GET \\ $BAO\_ADDR/v1/api-keys/llm-service \\ | jq { "request\_id": "4ea9a66e-c63a-433c-b2e2-015c39c45086", "lease\_id": "", "renewable": false, "lease\_duration": 2764800, "data": { "key": "0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP" }, "wrap\_info": null, "warnings": null, "auth": null } | -| :---- | +```command +curl --header "X-Vault-Token: s.TuQBY39kkpEDOqKcKYbWvpmZ" \ + --request GET \ + $BAO_ADDR/v1/api-keys/llm-service \ + | jq +``` + +```output +{ + "request_id": "4ea9a66e-c63a-433c-b2e2-015c39c45086", + "lease_id": "", + "renewable": false, + "lease_duration": 2764800, + "data": { + "key": "0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP" + }, + "wrap_info": null, + "warnings": null, + "auth": null +} +``` This API token can be used in applications and services to access the API key secret. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: -* [Go](https://github.com/hashicorp/vault/tree/main/api) -* [Ruby](https://github.com/hashicorp/vault-ruby) -* [C\#](https://github.com/rajanadar/VaultSharp) -* [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) -* [Kotlin](https://github.com/kunickiaj/vault-kotlin) -* [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) -* [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) -* [Python](https://github.com/hvac/hvac) +- [Go](https://github.com/hashicorp/vault/tree/main/api) +- [Ruby](https://github.com/hashicorp/vault-ruby) +- [C#](https://github.com/rajanadar/VaultSharp) +- [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) +- [Kotlin](https://github.com/kunickiaj/vault-kotlin) +- [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) +- [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) +- [Python](https://github.com/hvac/hvac) -### Convert existing secrets from Azure Key Vault to OpenBao +### Convert Existing Secrets from Azure Key Vault to OpenBao The above steps outline how to migrate a single secret stored in Azure Key Vault to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in Azure Key Vault involves iterating on the following process: -1. Retrieve the secret in Azure Key Vault. -2. Determine which entities (users, machines, and services) need read or write access to that secret. -3. Create a permissions policy and attach it to an AppRole in OpenBao. -4. Generate an API token for the AppRole. -5. Update any entity code or configurations to use the API token to access the secret in OpenBao. +1. Retrieve the secret in Azure Key Vault. +1. Determine which entities (users, machines, and services) need read or write access to that secret. +1. Create a permissions policy and attach it to an AppRole in OpenBao. +1. Generate an API token for the AppRole. +1. Update any entity code or configurations to use the API token to access the secret in OpenBao. ## Production Considerations @@ -203,36 +356,36 @@ When migrating from Azure Key Vault to OpenBao on Linode, it's important to ensu For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. -* **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. -* **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. -* **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. -* **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. +- **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +- **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +- **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +- **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. -### High availability +### High Availability For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. -* **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. -* **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -* **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. +- **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +- **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. The resources below are provided to help you become familiar with OpenBao when migrating from Azure Key Vault to Linode. ## Additional Resources -* Microsoft Azure - * [Key Vault Documentation](https://learn.microsoft.com/en-us/azure/key-vault/) - * [az CLI Documentation](https://learn.microsoft.com/en-us/cli/azure/) -* OpenBao - * [Configuration Documentation](https://openbao.org/docs/configuration/) - * High Availability - * [Architectural Internals](https://openbao.org/docs/internals/high-availability/) - * [Detailed Concepts](https://openbao.org/docs/concepts/ha/) - * [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) - * [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages -* Linode - * [Documentation](https://www.linode.com/docs/) - * [Linode Cloud Manager](https://cloud.linode.com/) - * [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - * [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) - * [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file +- Microsoft Azure + - [Key Vault Documentation](https://learn.microsoft.com/en-us/azure/key-vault/) + - [`az` CLI Documentation](https://learn.microsoft.com/en-us/cli/azure/) +- OpenBao + - [Configuration Documentation](https://openbao.org/docs/configuration/) + - High Availability + - [Architectural Internals](https://openbao.org/docs/internals/high-availability/) + - [Detailed Concepts](https://openbao.org/docs/concepts/ha/) + - [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) + - [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages +- Linode + - [Documentation](https://www.linode.com/docs/) + - [Linode Cloud Manager](https://cloud.linode.com/) + - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) + - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) + - [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md index 3ffd0ce0a54..a693c03361e 100644 --- a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,10 +1,9 @@ --- slug: migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine -title: "Migrate From Gcp Secret Manager to Openbao on Linode Kubernetes Engine" +title: "Migrate From GCP Secret Manager to OpenBao on Linode Kubernetes Engine" description: "Two to three sentences describing your guide." -og_description: "Optional two to three sentences describing your guide when shared on social media. If omitted, the `description` parameter is used within social links." -authors: ["Linode"] -contributors: ["Linode"] +authors: ["Akamai"] +contributors: ["Akamai"] published: 2025-05-01 keywords: ['list','of','keywords','and key phrases'] license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)' @@ -23,9 +22,9 @@ By considering the specific security and compliance needs of the organization, t When migrating from GCP Secret Manager to OpenBao on Linode, your requirements will dictate whether to install OpenBao on a single Linode Compute Instance or to pursue a larger scale, more fault tolerant environment with OpenBao on Kubernetes through the Linode Kubernetes Engine (LKE). Follow the appropriate guide based on your requirements: -* [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) -* [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -* [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) +- [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) +- [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) +- [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your GCP account with sufficient permissions to work with GCP Secret Manager. @@ -33,166 +32,315 @@ In addition to the prerequisites needed for either of the above deployment metho When migrating from GCP Secret Manager to OpenBao deployed on Linode, begin by determining your existing use cases for GCP Secret Manager. -### Assess current secrets management requirements in GCP +### Assess Current Secrets Management Requirements in GCP Review how your organization uses GCP Secret Manager. For example, you may have a web application which validates the authenticity of JSON Web Tokens (JWT) by verifying its signature. Security best practices would dictate that you don’t hardcode—in the deployed application image or in the source code itself—the JWT signing secret used for verification. Instead, the secret would be injected directly into the deployment at runtime. The application would be granted a role for accessing the JWT signing secret in GCP Secret Manager, which is provided for injection on-the-fly. This keeps the secret safe from being leaked via CI/CD processes or by being checked into a code repository. -### Review existing secrets +### Review Existing Secrets -In the GCP Secret Manager dashboard, review your existing secrets. -![][image2] +In the GCP Secret Manager dashboard, review your existing secrets. -Alternatively, use the Google Cloud CLI (gcloud) to provide insight into your existing secrets and their usage. Authenticate the CLI. Then, [set the gcloud configuration to your current project](https://cloud.google.com/sdk/gcloud/reference/config/set). For example: +![](image1.png) -| $ gcloud auth login $ gcloud config set project ecommerce-application-454116 | -| :---- | +Alternatively, use the Google Cloud CLI (`gcloud`) to provide insight into your existing secrets and their usage. Authenticate the CLI. Then, [set the `gcloud` configuration to your current project](https://cloud.google.com/sdk/gcloud/reference/config/set). For example: + +```command +gcloud auth login +gcloud config set project ecommerce-application-454116 +``` To [list all secrets](https://cloud.google.com/sdk/gcloud/reference/secrets/list), run the following command: -| $ gcloud secrets list NAME CREATED REPLICATION\_POLICY LOCATIONS billing\_service\_API\_key 2025-03-01T12:25:36 automatic \- deploy\_key 2025-02-28T04:04:58 automatic \- inventory\_service\_API\_key 2024-11-15T16:35:35 automatic \- jwt-signing-secret 2025-03-08T12:01:30 automatic \- slack\_webhook\_url 2024-11-19T21:19:15 automatic \- | -| :---- | +```command +gcloud secrets list +``` + +```output +NAME CREATED REPLICATION_POLICY LOCATIONS +billing_service_API_key 2025-03-01T12:25:36 automatic - +deploy_key 2025-02-28T04:04:58 automatic - +inventory_service_API_key 2024-11-15T16:35:35 automatic - +jwt-signing-secret 2025-03-08T12:01:30 automatic - +slack_webhook_url 2024-11-19T21:19:15 automatic - +``` To see the [value of the latest version for a single secret](https://cloud.google.com/sdk/gcloud/reference/secrets/versions/access), run the following command: -| $ gcloud secrets versions access latest \--secret=jwt-signing-secret EU&&7O^\#c2GAMIdRyJlZkPEdoWKgy%CW | -| :---- | +```command +gcloud secrets versions access latest --secret=jwt-signing-secret +``` + +```output +EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW +``` Ensure that you securely handle any exported secrets, as they will no longer benefit from encryption by GCP Secret Manager. -Alternatively, secrets can be viewed in the GCP UI by selecting the secret, finding the latest version, and clicking **Actions \> View secret value**. +Alternatively, secrets can be viewed in the GCP UI by selecting the secret, finding the latest version, and clicking **Actions > View secret value**. -![][image3] +![](image2.png) -GCP uses IAM to manage roles and principals with access to a particular secret. For example, a GCP Compute Instance might run an API that handles authentication for a web application. That workload may have an IAM role called JWTSigner, and the role has an attached policy which gives it read access to the jwt-signing-secret value in GCP Secret Manager. +GCP uses IAM to manage roles and principals with access to a particular secret. For example, a GCP Compute Instance might run an API that handles authentication for a web application. That workload may have an IAM role called `JWTSigner`, and the role has an attached policy which gives it read access to the `jwt-signing-secret` value in GCP Secret Manager. Replicating this setup using OpenBao involves the following steps: -1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/) that will take the place of the GCP IAM role. -2. Store the JWT signing secret in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). -3. Verify successful secret access with the API token associated with the AppRole. -4. Assign the AppRole to the applications that need access to the secret. +1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/) that will take the place of the GCP IAM role. +1. Store the JWT signing secret in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). +1. Verify successful secret access with the API token associated with the AppRole. +1. Assign the AppRole to the applications that need access to the secret. ### Authenticate the CLI First, ensure that the OpenBao server is running. -| This guide assumes that the BAO\_ADDR environment variable has been set. If you are working directly on a Linode, then an example value may be http://0.0.0.0:8200. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be http://127.0.0.1:8200. | -| :---- | +{{< note >}} +This guide assumes that the `BAO_ADDR` environment variable has been set. If you are working directly on a Linode, then an example value may be `http://0.0.0.0:8200`. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be `http://127.0.0.1:8200`. +{{< /note >}} + +Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with `bao login`, providing your root token. For example: -Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with bao login, providing your root token. For example: +```command +bao login --method=token s.36Yb3ijEOJbifprhdEiFtPhR +``` -| $ bao login \--method=token s.36Yb3ijEOJbifprhdEiFtPhR WARNING\! The BAO\_TOKEN environment variable is set\! The value of this variable will take precedence; if this is unwanted please unset BAO\_TOKEN or update its value accordingly. Success\! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. Key Value \--- \----- token s.36Yb3ijEOJbifprhdEiFtPhR token\_accessor ykmfH8QV7E1OU86bth3GMCdf token\_duration ∞ token\_renewable false token\_policies \["root"\] identity\_policies \[\] policies \["root"\] | -| :---- | +```output +WARNING! The BAO_TOKEN environment variable is set! The value of this variable will take precedence; if this is unwanted please unset BAO_TOKEN or update its value accordingly. -### Unseal the OpenBao vault +Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. + +Key Value +--- ----- +token s.36Yb3ijEOJbifprhdEiFtPhR +token_accessor ykmfH8QV7E1OU86bth3GMCdf +token_duration ∞ +token_renewable false +token_policies ["root"] +identity_policies [] +policies ["root"] +``` + +### Unseal the OpenBao Vault OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. Before continuing, unseal the OpenBao vault. -### Create a policy and AppRole +### Create a Policy and AppRole Creating and using an OpenBao AppRole involves a few steps: -1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). -2. [Create a policy](https://openbao.org/docs/concepts/policies/). -3. Create an AppRole, attaching the newly created policy. -4. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. -5. Generate an API token for the AppRole. +1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). +1. [Create a policy](https://openbao.org/docs/concepts/policies/). +1. Create an AppRole, attaching the newly created policy. +1. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. +1. Generate an API token for the AppRole. Enable the AppRole authentication method with the following CLI command: -| $ bao auth enable approle Success\! Enabled approle auth method at: approle/ | -| :---- | +```command +bao auth enable approle +``` + +```output +Success! Enabled approle auth method at: approle/ +``` + +In `/etc/openbao`, create a new policy file for reading the secret. For example, a new file called `jwt-secrets-policy.hcl` would have the following contents: -In /etc/openbao, create a new policy file for reading the secret. For example, a new file called jwt-secrets-policy.hcl would have the following contents: +```file {title="jwt-secrets-policy.hcl"} +path "jwt/*" { + capabilities = ["read"] +} +``` -| path "jwt/\*" { capabilities \= \["read"\] } | -| :---- | +This policy grants read permissions to any secrets within the `jwt` secrets store path. Add the policy to OpenBao with the following command: -This policy grants read permissions to any secrets within the jwt secrets store path. Add the policy to OpenBao with the following command: +```command +bao policy write jwt-secrets-policy /etc/openbao/jwt-secrets-policy.hcl +``` -| $ bao policy write jwt-secrets-policy /etc/openbao/jwt-secrets-policy.hcl Success\! Uploaded policy: jwt-secrets-policy | -| :---- | +```output +Success! Uploaded policy: jwt-secrets-policy +``` Create an AppRole for the application that will need to access this secret: -| $ bao write \\ auth/approle/role/app-authenticator-approle \\ token\_policies=jwt-secrets-policy Success\! Data written to: auth/approle/role/app-authenticator-approle | -| :---- | +```command +bao write \ + auth/approle/role/app-authenticator-approle \ + token_policies=jwt-secrets-policy +``` + +```output +Success! Data written to: auth/approle/role/app-authenticator-approle +``` Verify that the AppRole was written successfully: -| $ bao read auth/approle/role/app-authenticator-approle Key Value \--- \----- bind\_secret\_id true local\_secret\_ids false secret\_id\_bound\_cidrs \ secret\_id\_num\_uses 0 secret\_id\_ttl 0s token\_bound\_cidrs \[\] token\_explicit\_max\_ttl 0s token\_max\_ttl 0s token\_no\_default\_policy false token\_num\_uses 0 token\_period 0s token\_policies \[jwt-secrets-policy\] token\_strictly\_bind\_ip false token\_ttl 0s token\_type default | -| :---- | +```command +bao read auth/approle/role/app-authenticator-approle +``` + +```output +Key Value +--- ----- +bind_secret_id true +local_secret_ids false +secret_id_bound_cidrs +secret_id_num_uses 0 +secret_id_ttl 0s +token_bound_cidrs [] +token_explicit_max_ttl 0s +token_max_ttl 0s +token_no_default_policy false +token_num_uses 0 +token_period 0s +token_policies [jwt-secrets-policy] +token_strictly_bind_ip false +token_ttl 0s +token_type default +``` Fetch the AppRole ID with the following command: -| $ bao read auth/approle/role/app-authenticator-approle/role-id Key Value \--- \----- role\_id 019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863 | -| :---- | +```command +bao read auth/approle/role/app-authenticator-approle/role-id +``` + +```output +Key Value +--- ----- +role_id 019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863 +``` Generate a secret ID for the role: -| $ bao write \-f auth/approle/role/app-authenticator-approle/secret-id Key Value \--- \----- secret\_id cef786fb-1d1c-4c52-9466-aea47b3c8d3a secret\_id\_accessor 373500ba-6922-4f91-b7f3-ec25f8253d1d secret\_id\_num\_uses 0 secret\_id\_ttl 0s | -| :---- | +```command +bao write -f auth/approle/role/app-authenticator-approle/secret-id +``` + +```output +Key Value +--- ----- +secret_id cef786fb-1d1c-4c52-9466-aea47b3c8d3a +secret_id_accessor 373500ba-6922-4f91-b7f3-ec25f8253d1d +secret_id_num_uses 0 +secret_id_ttl 0s +``` Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. -| $ bao write auth/approle/login \\ role\_id="019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863" \\ secret\_id="cef786fb-1d1c-4c52-9466-aea47b3c8d3a" Key Value \--- \----- token s.dy572yUtTNvHTZgIoxdNVO41 token\_accessor zT1TP281vORYSjysBiuMydht token\_duration 768h token\_renewable true token\_policies \["jwt-secrets-policy" "default"\] identity\_policies \[\] policies \["jwt-secrets-policy" "default"\] token\_meta\_role\_name app-authenticator-approle | -| :---- | +```command +bao write auth/approle/login \ + role_id="019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863" \ + secret_id="cef786fb-1d1c-4c52-9466-aea47b3c8d3a" +``` + +```output +Key Value +--- ----- +token s.dy572yUtTNvHTZgIoxdNVO41 +token_accessor zT1TP281vORYSjysBiuMydht +token_duration 768h +token_renewable true +token_policies ["jwt-secrets-policy" "default"] +identity_policies [] +policies ["jwt-secrets-policy" "default"] +token_meta_role_name app-authenticator-approle +``` -The AppRole token (s.dy572yUtTNvHTZgIoxdNVO41 in the previous example) can be used by a user, machine, or service—such as the authentication API for a web application—to authenticate OpenBao API calls, giving the caller authorization to read the JWT signing secret. +The AppRole token (`s.dy572yUtTNvHTZgIoxdNVO41` in the previous example) can be used by a user, machine, or service—such as the authentication API for a web application—to authenticate OpenBao API calls, giving the caller authorization to read the JWT signing secret. -### Store the secret +### Store the Secret -Create the secret store that is defined in the policy. For this example, all secrets will be stored under the jwt path. Run the following command: +Create the secret store that is defined in the policy. For this example, all secrets will be stored under the `jwt` path. Run the following command: -| $ bao secrets enable \--path=jwt kv Success\! Enabled the kv secrets engine at: jwt/ | -| :---- | +```command +bao secrets enable --path=jwt kv +``` + +```output +Success! Enabled the kv secrets engine at: jwt/ +``` The JWT signing secret stored at GCP Secret Manager was a simple string: -| EU&&7O^\#c2GAMIdRyJlZkPEdoWKgy%CW | -| :---- | +``` +EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW +``` + +To store this as a key-value pair in OpenBao underneath the `jwt` path as a secret named signer, run the following command: -To store this as a key-value pair in OpenBao underneath the jwt path as a secret named signer, run the following command: +```command +bao kv put --mount=jwt signer \ + "secret"="EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW" +``` -| $ bao kv put \--mount=jwt signer \\ "secret"="EU&&7O^\#c2GAMIdRyJlZkPEdoWKgy%CW" Success\! Data written to: jwt/signer | -| :---- | +```output +Success! Data written to: jwt/signer +``` -### Retrieve the secret +### Retrieve the Secret To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: -| $ bao kv get \--mount=jwt signer \====== Data \====== Key Value \--- \----- secret EU&&7O^\#c2GAMIdRyJlZkPEdoWKgy%CW | -| :---- | +```command +bao kv get --mount=jwt signer +``` + +```output +====== Data ====== +Key Value +--- ----- +secret EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW +``` Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: -| $ curl \--header "X-Vault-Token: s.dy572yUtTNvHTZgIoxdNVO41" \\ \--request GET \\ $BAO\_ADDR/v1/jwt/signer \\ | jq { "request\_id": "0e70b929-06b6-4685-b787-dc1ce6c31b9b", "lease\_id": "", "renewable": false, "lease\_duration": 2764800, "data": { "secret": "EU&&7O^\#c2GAMIdRyJlZkPEdoWKgy%CW" }, "wrap\_info": null, "warnings": null, "auth": null } | -| :---- | +```command +curl --header "X-Vault-Token: s.dy572yUtTNvHTZgIoxdNVO41" \ + --request GET \ + $BAO_ADDR/v1/jwt/signer \ + | jq +``` + +```output +{ + "request_id": "0e70b929-06b6-4685-b787-dc1ce6c31b9b", + "lease_id": "", + "renewable": false, + "lease_duration": 2764800, + "data": { + "secret": "EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW" + }, + "wrap_info": null, + "warnings": null, + "auth": null +} +``` This API token can be used in applications and services to access the JWT signing secret. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: -* [Go](https://github.com/hashicorp/vault/tree/main/api) -* [Ruby](https://github.com/hashicorp/vault-ruby) -* [C\#](https://github.com/rajanadar/VaultSharp) -* [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) -* [Kotlin](https://github.com/kunickiaj/vault-kotlin) -* [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) -* [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) -* [Python](https://github.com/hvac/hvac) +- [Go](https://github.com/hashicorp/vault/tree/main/api) +- [Ruby](https://github.com/hashicorp/vault-ruby) +- [C#](https://github.com/rajanadar/VaultSharp) +- [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) +- [Kotlin](https://github.com/kunickiaj/vault-kotlin) +- [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) +- [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) +- [Python](https://github.com/hvac/hvac) -### Convert existing secrets from GCP Secret Manager to OpenBao +### Convert Existing Secrets from GCP Secret Manager to OpenBao The above steps outline how to migrate a single secret stored in GCP Secret Manager to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in GCP Secret Manager involves iterating on the following process: -1. Retrieve the secret in GCP. -2. Determine which entities (users, machines, and services) need read or write access to that secret. -3. Create a permissions policy and attach it to an AppRole in OpenBao. -4. Generate an API token for the AppRole. -5. Update any entity code or configurations to use the API token to access the secret in OpenBao. +1. Retrieve the secret in GCP. +1. Determine which entities (users, machines, and services) need read or write access to that secret. +1. Create a permissions policy and attach it to an AppRole in OpenBao. +1. Generate an API token for the AppRole. +1. Update any entity code or configurations to use the API token to access the secret in OpenBao. ## Production Considerations @@ -202,36 +350,36 @@ When migrating from GCP Secret Manager to OpenBao on Linode, it's important to e For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. -* **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. -* **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. -* **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. -* **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. +- **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +- **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +- **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +- **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. -### High availability +### High Availability For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. -* **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. -* **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -* **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. +- **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +- **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. The resources below are provided to help you become familiar with OpenBao when migrating from GCP Secret Manager to Linode. ## Additional Resources -* GCP - * [Secret Manager Documentation](https://cloud.google.com/secret-manager/docs) - * [gcloud secrets documentation](https://cloud.google.com/sdk/gcloud/reference/secrets) -* OpenBao - * [Configuration Documentation](https://openbao.org/docs/configuration/) - * High Availability - * [Architectural Internals](https://openbao.org/docs/internals/high-availability/) - * [Detailed Concepts](https://openbao.org/docs/concepts/ha/) - * [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) - * [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages -* Linode - * [Documentation](https://www.linode.com/docs/) - * [Linode Cloud Manager](https://cloud.linode.com/) - * [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - * [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) - * [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file +- GCP + - [Secret Manager Documentation](https://cloud.google.com/secret-manager/docs) + - [gcloud secrets documentation](https://cloud.google.com/sdk/gcloud/reference/secrets) +- OpenBao + - [Configuration Documentation](https://openbao.org/docs/configuration/) + - High Availability + - [Architectural Internals](https://openbao.org/docs/internals/high-availability/) + - [Detailed Concepts](https://openbao.org/docs/concepts/ha/) + - [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) + - [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages +- Linode + - [Documentation](https://www.linode.com/docs/) + - [Linode Cloud Manager](https://cloud.linode.com/) + - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) + - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) + - [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md index 900279c0949..a53196db3df 100644 --- a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,10 +1,9 @@ --- slug: migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine -title: "Migrate From Oracle Vault to Openbao on Linode Kubernetes Engine" +title: "Migrate From Oracle Vault to OpenBao on Linode Kubernetes Engine" description: "Two to three sentences describing your guide." -og_description: "Optional two to three sentences describing your guide when shared on social media. If omitted, the `description` parameter is used within social links." -authors: ["Linode"] -contributors: ["Linode"] +authors: ["Akamai"] +contributors: ["Akamai"] published: 2025-05-01 keywords: ['list','of','keywords','and key phrases'] license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)' @@ -15,7 +14,7 @@ external_resources: This guide walks through how to migrate secrets from Oracle Vault to OpenBao running on Linode. -Oracle Vault is a part of Oracle Cloud Infrastructure (OCI). It provides a secure, managed solution for storing and controlling access to sensitive information—such as API keys, passwords, and encryption keys. Oracle Vault is designed to integrate with other Oracle services, supporting features for key management, secret storage, and cryptographic functions. +Oracle Vault is a part of Oracle Cloud Infrastructure (OCI). It provides a secure, managed solution for storing and controlling access to sensitive information—such as API keys, passwords, and encryption keys. Oracle Vault is designed to integrate with other Oracle services, supporting features for key management, secret storage, and cryptographic functions. [OpenBao](https://openbao.org/) is an open-source fork of [HashiCorp Vault](https://www.vaultproject.io/) designed to give organizations control over their cryptographic infrastructure. With OpenBao, organizations can deploy, configure, and manage keys and secrets in both cloud and on-premises environments without relying on vendor-managed services. @@ -25,9 +24,9 @@ Oracle Vault may be used by organizations deeply embedded in Oracle’s ecosyste When migrating from Oracle Vault to OpenBao on Linode, your requirements will dictate whether to install OpenBao on a single Linode Compute Instance or to pursue a larger scale, more fault tolerant environment with OpenBao on Kubernetes through the Linode Kubernetes Engine (LKE). Follow the appropriate guide based on your requirements: -* [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) -* [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -* [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) +- [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) +- [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) +- [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your Oracle Cloud account with sufficient permissions to work with Oracle Vault. @@ -35,177 +34,374 @@ In addition to the prerequisites needed for either of the above deployment metho When migrating from Oracle Vault to OpenBao deployed on Linode, begin by determining your existing use cases for Oracle Vault. -### Assess current secrets management requirements in Oracle Cloud +### Assess Current Secrets Management Requirements in Oracle Cloud Review how your organization uses Oracle Vault. For example, you may have an application that uses services from multiple cloud providers, and that application needs access keys to authenticate with those provider services. Security best practices would dictate that you don’t hardcode these sensitive credentials in application source code or images. Instead, the credentials would be injected directly into the deployment at runtime. The application would be granted a role for accessing the credentials in Oracle Vault, which is provided for injection on-the-fly. This keeps the secret safe from being leaked via CI/CD processes or by being checked into a code repository. -### Review existing secrets +### Review Existing Secrets In the Oracle Vault, find the vault you want to migrate, and review its existing secrets: -![][image2] +![](image1.png) -You can also use the Oracle Cloud CLI (oci) to manage the secrets in your Oracle Vault. First, you will need the ID of the compartment to which the vault belongs. For example, the credentials vault in the image above belongs to the web-application compartment. +You can also use the Oracle Cloud CLI (`oci`) to manage the secrets in your Oracle Vault. First, you will need the ID of the compartment to which the vault belongs. For example, the `credentials` vault in the image above belongs to the `web-application` compartment. After authenticating the CLI, find the compartment ID with the following command: -| $ $ oci iam compartment list \--query 'data\[\]\["name","id"\]' \[ \[ "web-application", "ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq" \] \] | -| :---- | +```command +oci iam compartment list --query 'data[]["name","id"]' +``` + +```output +[ + [ + "web-application", "ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq" + ] +] +``` Find the ID of the compartment with your vault. To [list the secrets in your vaults](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/vault/secret/list.html), run the following command, using the compartment ID: -| $ oci vault secret list \\ \--compartment-id \\ ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq \\ \--query 'data\[\].\["secret-name","description","id"\]' \[ \[ "cloud\_provider\_a", "Access key ID and secret access key for provider", "ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea" \], \[ "cloud\_provider\_b", "Project ID and project API KEY", "ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqacnhdzfprgd4f4ml7rpkjqmqlyz7p5kjjfinvyn57qdoa" \], \[ "cloud\_provider\_c", "Client ID and client secret", "ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqavn32ibazaqinya5bv3eyc4ndfvebcnksnqk4vl74xqqa" \] \] | -| :---- | +```command +oci vault secret list \ + --compartment-id \ +ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq \ + --query 'data[].["secret-name","description","id"]' +``` + +```output +[ + [ + "cloud_provider_a", + "Access key ID and secret access key for provider", +"ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea" + ], + [ + "cloud_provider_b", + "Project ID and project API KEY", +"ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqacnhdzfprgd4f4ml7rpkjqmqlyz7p5kjjfinvyn57qdoa" + ], + [ + "cloud_provider_c", + "Client ID and client secret", +"ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqavn32ibazaqinya5bv3eyc4ndfvebcnksnqk4vl74xqqa" + ] +] +``` To retrieve the [value of a secret](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/secrets/secret-bundle/get.html), run the following command, providing the secret ID: -| $ oci secrets secret-bundle get \\ \--secret-id ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea \\ \--stage CURRENT \\ \--query 'data."secret-bundle-content"' { "content": "eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ==", "content-type": "BASE64" } | -| :---- | +```command +oci secrets secret-bundle get \ + --secret-id ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea \ + --stage CURRENT \ + --query 'data."secret-bundle-content"' +``` + +```output +{ + "content": +"eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ==", + "content-type": "BASE64" +} +``` -If the secret bundle content is of type BASE64, then decode it to retrieve the value of the secret. For example: +If the secret bundle `content` is of type `BASE64`, then decode it to retrieve the value of the secret. For example: -| $ echo eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ== \\ | base64 \--decode { "access\_key\_id": "AKIA513J2DDRAXCFKXF5", "secret\_access\_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } | -| :---- | +```command +echo eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ== \ + | base64 --decode +``` + +```output +{ "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } +``` To combine secret retrieval with base64 decoding into a single step, run the following command: -| $ oci secrets secret-bundle get \\ \--secret-id ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea \\ \--stage CURRENT \\ \--query 'data."secret-bundle-content".content' \\ \--raw-output \\ | base64 \--decode { "access\_key\_id": "AKIA513J2DDRAXCFKXF5", "secret\_access\_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } | -| :---- | +```command +oci secrets secret-bundle get \ + --secret-id ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea \ + --stage CURRENT \ + --query 'data."secret-bundle-content".content' \ + --raw-output \ + | base64 --decode +``` + +```output +{ "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } +``` Ensure that you securely handle any exposed secrets, as they will no longer benefit from encryption by Oracle Vault. Alternatively, the value of a secret can be viewed in the Oracle Vault UI by selecting the secret, selecting the latest version, and clicking **View Secret Contents**. -![][image3] +![](image2.png) Oracle Vault doesn’t use the concept of *roles* in a granular way, but it does use identity and access management (IAM) policies to control access. To adopt a permissions approach that uses RBAC in OpenBao, take the following steps: -1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/), attaching a policy that allows access to these cloud provider credential secrets. -2. Store the credential secrets in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). -3. Verify successful secret access with the API token associated with the AppRole. -4. Assign the AppRole to the applications that need access to these secrets. +1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/), attaching a policy that allows access to these cloud provider credential secrets. +1. Store the credential secrets in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). +1. Verify successful secret access with the API token associated with the AppRole. +1. Assign the AppRole to the applications that need access to these secrets. ### Authenticate the CLI First, ensure that the OpenBao server is running. -| This guide assumes that the BAO\_ADDR environment variable has been set. If you are working directly on a Linode, then an example value may be http://0.0.0.0:8200. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be http://127.0.0.1:8200. | -| :---- | +{{< note >}} +This guide assumes that the `BAO_ADDR` environment variable has been set. If you are working directly on a Linode, then an example value may be `http://0.0.0.0:8200`. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be `http://127.0.0.1:8200`. +{{< /note >}} Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with bao login, providing your root token. For example: -| $ bao login \--method=token s.36Yb3ijEOJbifprhdEiFtPhR WARNING\! The BAO\_TOKEN environment variable is set\! The value of this variable will take precedence; if this is unwanted please unset BAO\_TOKEN or update its value accordingly. Success\! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. Key Value \--- \----- token s.36Yb3ijEOJbifprhdEiFtPhR token\_accessor ykmfH8QV7E1OU86bth3GMCdf token\_duration ∞ token\_renewable false token\_policies \["root"\] identity\_policies \[\] policies \["root"\] | -| :---- | +```command +bao login --method=token s.36Yb3ijEOJbifprhdEiFtPhR +``` -### Unseal the OpenBao vault +```output +WARNING! The BAO_TOKEN environment variable is set! The value of this variable will take precedence; if this is unwanted please unset BAO_TOKEN or update its value accordingly. + +Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. + +Key Value +--- ----- +token s.36Yb3ijEOJbifprhdEiFtPhR +token_accessor ykmfH8QV7E1OU86bth3GMCdf +token_duration ∞ +token_renewable false +token_policies ["root"] +identity_policies [] +policies ["root"] +``` + +### Unseal the OpenBao Vault OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. Before continuing, unseal the OpenBao vault. -### Create a policy and AppRole +### Create a Policy and AppRole Creating and using an OpenBao AppRole involves a few steps: -1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). -2. [Create a policy](https://openbao.org/docs/concepts/policies/). -3. Create an AppRole, attaching the newly created policy. -4. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. -5. Generate an API token for the AppRole. +1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). +1. [Create a policy](https://openbao.org/docs/concepts/policies/). +1. Create an AppRole, attaching the newly created policy. +1. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. +1. Generate an API token for the AppRole. Enable the AppRole authentication method with the following CLI command: -| $ bao auth enable approle Success\! Enabled approle auth method at: approle/ | -| :---- | +```command +bao auth enable approle +``` + +```output +Success! Enabled approle auth method at: approle/ +``` -In /etc/openbao, create a new policy file for reading the secret. For example, a new file called cloud-credentials-policy.hcl would have the following contents: +In `/etc/openbao`, create a new policy file for reading the secret. For example, a new file called `cloud-credentials-policy.hcl` would have the following contents: -| path "cloud-credentials/\*" { capabilities \= \["read"\] } | -| :---- | +```file {title="cloud-credentials-policy.hcl"} +path "cloud-credentials/*" { + capabilities = ["read"] +} +``` -This policy grants read permissions to any secrets within the cloud-credentials secrets store path. Add the policy to OpenBao with the following command: +This policy grants read permissions to any secrets within the `cloud-credentials` secrets store path. Add the policy to OpenBao with the following command: -| $ bao policy write \\ cloud-credentials-policy \\ /etc/openbao/cloud-credentials-policy.hcl Success\! Uploaded policy: cloud-credentials-policy | -| :---- | +```command +bao policy write \ + cloud-credentials-policy \ + /etc/openbao/cloud-credentials-policy.hcl +``` + +```output +Success! Uploaded policy: cloud-credentials-policy +``` Create an AppRole for the application that will need to access this secret: -| $ bao write \\ auth/approle/role/cloud-credential-reader-approle \\ token\_policies=cloud-credentials-policy Success\! Data written to: auth/approle/role/cloud-credential-reader-approle | -| :---- | +```command +bao write \ + auth/approle/role/cloud-credential-reader-approle \ + token_policies=cloud-credentials-policy +``` + +```output +Success! Data written to: auth/approle/role/cloud-credential-reader-approle +``` Verify that the AppRole was written successfully: -| $ bao read auth/approle/role/cloud-credential-reader-approle Key Value \--- \----- bind\_secret\_id true local\_secret\_ids false secret\_id\_bound\_cidrs \ secret\_id\_num\_uses 0 secret\_id\_ttl 0s token\_bound\_cidrs \[\] token\_explicit\_max\_ttl 0s token\_max\_ttl 0s token\_no\_default\_policy false token\_num\_uses 0 token\_period 0s token\_policies \[cloud-credentials-secrets-policy\] token\_strictly\_bind\_ip false token\_ttl 0s token\_type default | -| :---- | +```command +bao read auth/approle/role/cloud-credential-reader-approle +``` + +```output +Key Value +--- ----- +bind_secret_id true +local_secret_ids false +secret_id_bound_cidrs +secret_id_num_uses 0 +secret_id_ttl 0s +token_bound_cidrs [] +token_explicit_max_ttl 0s +token_max_ttl 0s +token_no_default_policy false +token_num_uses 0 +token_period 0s +token_policies [cloud-credentials-secrets-policy] +token_strictly_bind_ip false +token_ttl 0s +token_type default +``` Fetch the AppRole ID with the following command: -| $ bao read auth/approle/role/cloud-credential-reader-approle/role-id Key Value \--- \----- role\_id c8663988-136f-42de-af40-1dfb94f0c1f6 | -| :---- | +```command +bao read auth/approle/role/cloud-credential-reader-approle/role-id +``` + +```output +Key Value +--- ----- +role_id c8663988-136f-42de-af40-1dfb94f0c1f6 +``` Generate a secret ID for the role: -| $ bao write \-f auth/approle/role/cloud-credential-reader-approle/secret-id Key Value \--- \----- secret\_id 9b9c27a3-dc27-4eea-921f-773164ec17c7 secret\_id\_accessor 20abfad4-029f-45e8-a749-ecc041ff3554 secret\_id\_num\_uses 0 secret\_id\_ttl 0s | -| :---- | +```command +bao write -f auth/approle/role/cloud-credential-reader-approle/secret-id +``` + +```output +Key Value +--- ----- +secret_id 9b9c27a3-dc27-4eea-921f-773164ec17c7 +secret_id_accessor 20abfad4-029f-45e8-a749-ecc041ff3554 +secret_id_num_uses 0 +secret_id_ttl 0s +``` Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. -| $ bao write auth/approle/login \\ role\_id="c8663988-136f-42de-af40-1dfb94f0c1f6" \\ secret\_id="9b9c27a3-dc27-4eea-921f-773164ec17c7" Key Value \--- \----- token s.Q9n7KPnLKSDoYnVdrHnphEml token\_accessor LkSCfmBQVCfL8s2eX4EfnqO4 token\_duration 768h token\_renewable true token\_policies \["cloud-credentials-secrets-policy" "default"\] identity\_policies \[\] policies \["cloud-credentials-secrets-policy" "default"\] token\_meta\_role\_name cloud-credential-reader-approle | -| :---- | +```command +bao write auth/approle/login \ + role_id="c8663988-136f-42de-af40-1dfb94f0c1f6" \ + secret_id="9b9c27a3-dc27-4eea-921f-773164ec17c7" +``` -The AppRole token (s.Q9n7KPnLKSDoYnVdrHnphEml in the previous example) can be used by a user, machine, or service—such as an infrastructure management application—to authenticate OpenBao API calls, giving the caller authorization to read the cloud provider credentials secrets. +```output +Key Value +--- ----- +token s.Q9n7KPnLKSDoYnVdrHnphEml +token_accessor LkSCfmBQVCfL8s2eX4EfnqO4 +token_duration 768h +token_renewable true +token_policies ["cloud-credentials-secrets-policy" "default"] +identity_policies [] +policies ["cloud-credentials-secrets-policy" "default"] +token_meta_role_name cloud-credential-reader-approle +``` -### Store the secret +The AppRole token (`s.Q9n7KPnLKSDoYnVdrHnphEml` in the previous example) can be used by a user, machine, or service—such as an infrastructure management application—to authenticate OpenBao API calls, giving the caller authorization to read the cloud provider credentials secrets. -Create the secret store that is defined in the policy. For this example, all secrets will be stored under the api-keys path. Run the following command: +### Store the Secret -| $ bao secrets enable \--path=cloud-credentials kv Success\! Enabled the kv secrets engine at: cloud-credentials/ | -| :---- | +Create the secret store that is defined in the policy. For this example, all secrets will be stored under the `api-keys` path. Run the following command: -The cloud\_provider\_a secret stored at Oracle Vault was two key-value pairs, stored as JSON: +```command +bao secrets enable --path=cloud-credentials kv +``` -| { "access\_key\_id": "AKIA513J2DDRAXCFKXF5", "secret\_access\_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } | -| :---- | +```output +Success! Enabled the kv secrets engine at: cloud-credentials/ +``` -To store these key-value pairs in OpenBao underneath the cloud-credentials path as a secret named provider\_a, run the following command: +The `cloud_provider_a` secret stored at Oracle Vault was two key-value pairs, stored as JSON: -| $ bao kv put \--mount=cloud-credentials provider-a \\ "access\_key\_id"="AKIA513J2DDRAXCFKXF5" \\ "secret\_access\_key"="XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" Success\! Data written to: cloud-credentials/provider-a | -| :---- | +``` +{ "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } +``` -### Retrieve the secret +To store these key-value pairs in OpenBao underneath the `cloud-credentials` path as a secret named `provider_a`, run the following command: + +```command +bao kv put --mount=cloud-credentials provider-a \ + "access_key_id"="AKIA513J2DDRAXCFKXF5" \ + "secret_access_key"="XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" +``` + +```output +Success! Data written to: cloud-credentials/provider-a +``` + +### Retrieve the Secret To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: -| $ bao kv get \--mount=cloud-credentials provider-a \====== Data \====== Key Value \--- \----- access\_key\_id AKIA513J2DDRAXCFKXF5 secret\_access\_key XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x | -| :---- | +```command +bao kv get --mount=cloud-credentials provider-a +``` + +```output +====== Data ====== +Key Value +--- ----- +access_key_id AKIA513J2DDRAXCFKXF5 +secret_access_key XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x +``` Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: -| $ curl \--header "X-Vault-Token: s.Q9n7KPnLKSDoYnVdrHnphEml" \\ \--request GET \\ $BAO\_ADDR/v1/cloud-credentials/provider-a \\ | jq { "request\_id": "92c5026e-bb14-4e2a-8d70-e94fb005183f", "lease\_id": "", "renewable": false, "lease\_duration": 2764800, "data": { "access\_key\_id": "AKIA513J2DDRAXCFKXF5", "secret\_access\_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" }, "wrap\_info": null, "warnings": null, "auth": null } | -| :---- | +```command +curl --header "X-Vault-Token: s.Q9n7KPnLKSDoYnVdrHnphEml" \ + --request GET \ + $BAO_ADDR/v1/cloud-credentials/provider-a \ + | jq +``` + +```output +{ + "request_id": "92c5026e-bb14-4e2a-8d70-e94fb005183f", + "lease_id": "", + "renewable": false, + "lease_duration": 2764800, + "data": { + "access_key_id": "AKIA513J2DDRAXCFKXF5", + "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" + }, + "wrap_info": null, + "warnings": null, + "auth": null +} +``` This API token can be used in applications and services to access the cloud provider credentials secrets. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: -* [Go](https://github.com/hashicorp/vault/tree/main/api) -* [Ruby](https://github.com/hashicorp/vault-ruby) -* [C\#](https://github.com/rajanadar/VaultSharp) -* [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) -* [Kotlin](https://github.com/kunickiaj/vault-kotlin) -* [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) -* [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) -* [Python](https://github.com/hvac/hvac) +- [Go](https://github.com/hashicorp/vault/tree/main/api) +- [Ruby](https://github.com/hashicorp/vault-ruby) +- [C#](https://github.com/rajanadar/VaultSharp) +- [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) +- [Kotlin](https://github.com/kunickiaj/vault-kotlin) +- [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) +- [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) +- [Python](https://github.com/hvac/hvac) -### Convert existing secrets from Oracle Vault to OpenBao +### Convert Existing Secrets from Oracle Vault to OpenBao The above steps outline how to migrate a single secret stored in Oracle Vault to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in Oracle Vault involves iterating on the following process: -1. Retrieve the secret in Oracle Vault. -2. Determine which entities (users, machines, and services) need read or write access to that secret. -3. Create a permissions policy and attach it to an AppRole in OpenBao. -4. Generate an API token for the AppRole. -5. Update any entity code or configurations to use the API token to access the secret in OpenBao. +1. Retrieve the secret in Oracle Vault. +1. Determine which entities (users, machines, and services) need read or write access to that secret. +1. Create a permissions policy and attach it to an AppRole in OpenBao. +1. Generate an API token for the AppRole. +1. Update any entity code or configurations to use the API token to access the secret in OpenBao. ## Production Considerations @@ -215,36 +411,36 @@ When migrating from Oracle Vault to OpenBao on Linode, it's important to ensure For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. -* **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. -* **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. -* **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. -* **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. +- **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +- **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +- **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +- **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. -### High availability +### High Availability For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. -* **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. -* **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -* **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. +- **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +- **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. The resources below are provided to help you become familiar with OpenBao when migrating from Oracle Vault to Linode. ## Additional Resources -* Oracle Cloud - * [Vault Documentation](https://docs.oracle.com/en-us/iaas/Content/KeyManagement/Concepts/keyoverview.htm) - * [oci CLI Documentation](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm) -* OpenBao - * [Configuration Documentation](https://openbao.org/docs/configuration/) - * High Availability - * [Architectural Internals](https://openbao.org/docs/internals/high-availability/) - * [Detailed Concepts](https://openbao.org/docs/concepts/ha/) - * [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) - * [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages -* Linode - * [Documentation](https://www.linode.com/docs/) - * [Linode Cloud Manager](https://cloud.linode.com/) - * [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - * [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) - * [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file +- Oracle Cloud + - [Vault Documentation](https://docs.oracle.com/en-us/iaas/Content/KeyManagement/Concepts/keyoverview.htm) + - [oci CLI Documentation](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm) +- OpenBao + - [Configuration Documentation](https://openbao.org/docs/configuration/) + - High Availability + - [Architectural Internals](https://openbao.org/docs/internals/high-availability/) + - [Detailed Concepts](https://openbao.org/docs/concepts/ha/) + - [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) + - [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages +- Linode + - [Documentation](https://www.linode.com/docs/) + - [Linode Cloud Manager](https://cloud.linode.com/) + - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) + - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) + - [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file From 53969b03717f997f83ae2c3e87a0bdad213172ba Mon Sep 17 00:00:00 2001 From: Adam Overa Date: Thu, 1 May 2025 19:26:08 -0400 Subject: [PATCH 3/8] CI Tests Fix 1 --- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md index 8b0ccc4e148..e6096aa6eef 100644 --- a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -24,7 +24,7 @@ When migrating from AWS Secrets Manager to OpenBao on Linode, your requirements - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -- [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) +- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your AWS account with sufficient permissions to work with AWS Secrets Manager. diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md index 30c5e9c677c..9aee5dafa3e 100644 --- a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -26,7 +26,7 @@ When migrating from Azure Key Vault to OpenBao on Linode, your requirements will - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -- [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) +- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your Microsoft Azure account with sufficient permissions to work with Azure Key Vault. diff --git a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md index a693c03361e..791924dbd8f 100644 --- a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -24,7 +24,7 @@ When migrating from GCP Secret Manager to OpenBao on Linode, your requirements w - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -- [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) +- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your GCP account with sufficient permissions to work with GCP Secret Manager. diff --git a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md index a53196db3df..5cc29fb76b8 100644 --- a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -26,7 +26,7 @@ When migrating from Oracle Vault to OpenBao on Linode, your requirements will di - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -- [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) +- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your Oracle Cloud account with sufficient permissions to work with Oracle Vault. From b9f4d0d0f162876f0f1e281b054a7c2f00a9ed86 Mon Sep 17 00:00:00 2001 From: Adam Overa Date: Fri, 2 May 2025 15:51:37 -0400 Subject: [PATCH 4/8] Layout Edit 2 --- ....png => aws-secrets-manager-dashboard.png} | Bin .../index.md | 35 ++++----------- ...png => azure-key-vault-access-control.png} | Bin ...e1.png => azure-key-vault-secret-list.png} | Bin ...2.png => azure-key-vault-secret-value.png} | Bin .../index.md | 41 +++++------------- ...png => gcp-secret-manager-secret-list.png} | Bin ...ng => gcp-secret-manager-secret-value.png} | Bin .../index.md | 39 +++++------------ .../index.md | 39 +++++------------ ...mage1.png => oracle-vault-secret-list.png} | Bin ...age2.png => oracle-vault-secret-value.png} | Bin 12 files changed, 39 insertions(+), 115 deletions(-) rename docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/{image1.png => aws-secrets-manager-dashboard.png} (100%) rename docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/{image3.png => azure-key-vault-access-control.png} (100%) rename docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/{image1.png => azure-key-vault-secret-list.png} (100%) rename docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/{image2.png => azure-key-vault-secret-value.png} (100%) rename docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/{image1.png => gcp-secret-manager-secret-list.png} (100%) rename docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/{image2.png => gcp-secret-manager-secret-value.png} (100%) rename docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/{image1.png => oracle-vault-secret-list.png} (100%) rename docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/{image2.png => oracle-vault-secret-value.png} (100%) diff --git a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/image1.png b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/aws-secrets-manager-dashboard.png similarity index 100% rename from docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/image1.png rename to docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/aws-secrets-manager-dashboard.png diff --git a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md index e6096aa6eef..be992afbdab 100644 --- a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,15 +1,16 @@ --- slug: migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine title: "Migrate From AWS Secrets Manager to OpenBao on Linode Kubernetes Engine" -description: "Two to three sentences describing your guide." +description: "Learn how to migrate secrets from AWS Secrets Manager to OpenBao on Linode Kubernetes Engine (LKE) using Helm and AppRole authentication." authors: ["Akamai"] contributors: ["Akamai"] published: 2025-05-01 -keywords: ['list','of','keywords','and key phrases'] +keywords: ['aws secrets manager','openbao','migrate secrets from aws','openbao helm install','linode kubernetes engine','eks to openbao','bao kv put','bao approle authentication','open source vault alternative','manage secrets on lke'] license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)' external_resources: -- '[Link Title 1](http://www.example.com)' -- '[Link Title 2](http://www.example.net)' +- '[AWS Secrets Manager Documentation](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)' +- '[OpenBao Configuration Documentation](https://openbao.org/docs/configuration/)' +- '[OpenBao Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/)' --- This guide walks through how to migrate secrets from AWS Secrets Manager to OpenBao running on Linode. @@ -42,7 +43,7 @@ For example, you may have a web application with a corresponding database depend In the AWS Secrets Manager dashboard, review your existing secrets. -![](image1.png) +![AWS Secrets Manager showing list of stored secrets.](aws-secrets-manager-dashboard.png) Alternatively, using the AWS CLI can quickly provide insight into existing secrets and their usage. To list all secrets, run the following command: @@ -334,7 +335,7 @@ username psqluser Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: ```command -curl --header "X-Vault-Token: s.kpKsgWNtYLAktRYQT4BiMVMy" \ +curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ --request GET \ $BAO_ADDR/v1/database-credentials/psql \ | jq @@ -400,24 +401,4 @@ For production environments, OpenBao should be deployed with fault tolerance and - **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. - **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. - -The resources below are provided to help you become familiar with OpenBao when migrating from AWS Secrets Manager to Linode. - -## Additional Resources - -- AWS - - [Secrets Manager Documentation](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) -- OpenBao - - [Configuration Documentation](https://openbao.org/docs/configuration/) - - High Availability - - [Architectural Internals](https://openbao.org/docs/internals/high-availability/) - - [Detailed Concepts](https://openbao.org/docs/concepts/ha/) - - [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) - - [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages -- Linode - - [Documentation](https://www.linode.com/docs/) - - [Linode Cloud Manager](https://cloud.linode.com/) - - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) - - [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file +- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image3.png b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/azure-key-vault-access-control.png similarity index 100% rename from docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image3.png rename to docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/azure-key-vault-access-control.png diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image1.png b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/azure-key-vault-secret-list.png similarity index 100% rename from docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image1.png rename to docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/azure-key-vault-secret-list.png diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image2.png b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/azure-key-vault-secret-value.png similarity index 100% rename from docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/image2.png rename to docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/azure-key-vault-secret-value.png diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md index 9aee5dafa3e..718225acd14 100644 --- a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,15 +1,17 @@ --- slug: migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine title: "Migrate From Azure Key Vault to OpenBao on Linode Kubernetes Engine" -description: "Two to three sentences describing your guide." +description: "Migrate secrets from Azure Key Vault to OpenBao on Linode Kubernetes Engine (LKE) with Helm and RBAC for secure secret management." authors: ["Akamai"] contributors: ["Akamai"] published: 2025-05-01 -keywords: ['list','of','keywords','and key phrases'] +keywords: ['azure key vault','openbao','migrate secrets from azure','openbao helm install','linode kubernetes engine','aks to openbao','bao kv put','bao approle authentication','open source vault alternative','manage secrets on lke'] license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)' external_resources: -- '[Link Title 1](http://www.example.com)' -- '[Link Title 2](http://www.example.net)' +- '[Azure Key Vault Documentation](https://learn.microsoft.com/en-us/azure/key-vault/)' +- '[Azure `az` CLI Documentation](https://learn.microsoft.com/en-us/cli/azure/)' +- '[OpenBao Configuration Documentation](https://openbao.org/docs/configuration/)' +- '[OpenBao Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/)' --- This guide walks through how to migrate secrets stored in Azure Key Vault to OpenBao running on Linode. @@ -44,7 +46,7 @@ For example, you may have an application which uses third-party services—such In the Azure Key Vault dashboard, review your existing secrets. -![](image1.png) +![Azure Key Vault UI showing list of secrets.](azure-key-vault-secret-list.png) You can also use the Azure CLI (`az`) to manage the secrets in your key vault. After authenticating the CLI, [list the secrets in your vault](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-list) by providing the name of your vault. For example: @@ -80,13 +82,13 @@ Ensure that you securely handle any exposed secrets, as they will no longer bene Alternatively, the value of a secret can be viewed in the Azure Key Vault UI by selecting the secret, selecting the latest version, and clicking **Show Secret Value**. -![](image2.png) +![Azure Key Vault UI showing how to view the value of a selected secret.](azure-key-vault-secret-value.png) Azure uses IAM with role based access control (RBAC) to manage access to a particular secret. For example, an Azure VM within your Resource Group might run the application workload which needs access to the LLM service API key stored within your vault. The VM would be assigned the [`Key Vault Secrets User role`](https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-guide?tabs=azure-cli#azure-built-in-roles-for-key-vault-data-plane-operations), allowing it to read the contents of secrets in the vault. To view access settings, navigate to **Access control (IAM)** within your vault, then click the **Role assignments** tab. -![](image3.png) +![Azure Key Vault Access control IAM role assignments tab.](azure-key-vault-access-control.png) Replicating this setup using OpenBao involves the following steps: @@ -306,7 +308,7 @@ key 0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: ```command -curl --header "X-Vault-Token: s.TuQBY39kkpEDOqKcKYbWvpmZ" \ +curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ --request GET \ $BAO_ADDR/v1/api-keys/llm-service \ | jq @@ -367,25 +369,4 @@ For production environments, OpenBao should be deployed with fault tolerance and - **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. - **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. - -The resources below are provided to help you become familiar with OpenBao when migrating from Azure Key Vault to Linode. - -## Additional Resources - -- Microsoft Azure - - [Key Vault Documentation](https://learn.microsoft.com/en-us/azure/key-vault/) - - [`az` CLI Documentation](https://learn.microsoft.com/en-us/cli/azure/) -- OpenBao - - [Configuration Documentation](https://openbao.org/docs/configuration/) - - High Availability - - [Architectural Internals](https://openbao.org/docs/internals/high-availability/) - - [Detailed Concepts](https://openbao.org/docs/concepts/ha/) - - [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) - - [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages -- Linode - - [Documentation](https://www.linode.com/docs/) - - [Linode Cloud Manager](https://cloud.linode.com/) - - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) - - [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file +- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/image1.png b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/gcp-secret-manager-secret-list.png similarity index 100% rename from docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/image1.png rename to docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/gcp-secret-manager-secret-list.png diff --git a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/image2.png b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/gcp-secret-manager-secret-value.png similarity index 100% rename from docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/image2.png rename to docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/gcp-secret-manager-secret-value.png diff --git a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md index 791924dbd8f..39ba1876556 100644 --- a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,15 +1,17 @@ --- slug: migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine title: "Migrate From GCP Secret Manager to OpenBao on Linode Kubernetes Engine" -description: "Two to three sentences describing your guide." +description: "Migrate secrets from GCP Secret Manager to OpenBao on Linode Kubernetes Engine (LKE) using Helm charts and role-based access policies." authors: ["Akamai"] contributors: ["Akamai"] published: 2025-05-01 -keywords: ['list','of','keywords','and key phrases'] +keywords: ['gcp secret manager','openbao','migrate secrets from gcp','openbao helm install','linode kubernetes engine','gke to openbao','bao kv put','bao approle authentication','open source vault alternative','manage secrets on lke'] license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)' external_resources: -- '[Link Title 1](http://www.example.com)' -- '[Link Title 2](http://www.example.net)' +- '[Google Cloud Secret Manager Documentation](https://cloud.google.com/secret-manager/docs)' +- '[gcloud secrets documentation](https://cloud.google.com/sdk/gcloud/reference/secrets)' +- '[OpenBao Configuration Documentation](https://openbao.org/docs/configuration/)' +- '[OpenBao Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/)' --- This guide walks through how to migrate GCP Secret Manager secrets to OpenBao running Linode. @@ -42,7 +44,7 @@ For example, you may have a web application which validates the authenticity of In the GCP Secret Manager dashboard, review your existing secrets. -![](image1.png) +![GCP Secret Manager UI showing list of stored secrets.](gcp-secret-manager-secret-list.png) Alternatively, use the Google Cloud CLI (`gcloud`) to provide insight into your existing secrets and their usage. Authenticate the CLI. Then, [set the `gcloud` configuration to your current project](https://cloud.google.com/sdk/gcloud/reference/config/set). For example: @@ -80,7 +82,7 @@ Ensure that you securely handle any exported secrets, as they will no longer ben Alternatively, secrets can be viewed in the GCP UI by selecting the secret, finding the latest version, and clicking **Actions > View secret value**. -![](image2.png) +![GCP Secret Manager UI displaying how to value of a selected secret.](gcp-secret-manager-secret-value.png) GCP uses IAM to manage roles and principals with access to a particular secret. For example, a GCP Compute Instance might run an API that handles authentication for a web application. That workload may have an IAM role called `JWTSigner`, and the role has an attached policy which gives it read access to the `jwt-signing-secret` value in GCP Secret Manager. @@ -300,7 +302,7 @@ secret EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: ```command -curl --header "X-Vault-Token: s.dy572yUtTNvHTZgIoxdNVO41" \ +curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ --request GET \ $BAO_ADDR/v1/jwt/signer \ | jq @@ -361,25 +363,4 @@ For production environments, OpenBao should be deployed with fault tolerance and - **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. - **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. - -The resources below are provided to help you become familiar with OpenBao when migrating from GCP Secret Manager to Linode. - -## Additional Resources - -- GCP - - [Secret Manager Documentation](https://cloud.google.com/secret-manager/docs) - - [gcloud secrets documentation](https://cloud.google.com/sdk/gcloud/reference/secrets) -- OpenBao - - [Configuration Documentation](https://openbao.org/docs/configuration/) - - High Availability - - [Architectural Internals](https://openbao.org/docs/internals/high-availability/) - - [Detailed Concepts](https://openbao.org/docs/concepts/ha/) - - [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) - - [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages -- Linode - - [Documentation](https://www.linode.com/docs/) - - [Linode Cloud Manager](https://cloud.linode.com/) - - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) - - [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file +- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md index 5cc29fb76b8..1a7590ba2d4 100644 --- a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,15 +1,17 @@ --- slug: migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine title: "Migrate From Oracle Vault to OpenBao on Linode Kubernetes Engine" -description: "Two to three sentences describing your guide." +description: "Securely migrate secrets from Oracle Vault to OpenBao on Linode Kubernetes Engine (LKE), using Helm and AppRole-based access control." authors: ["Akamai"] contributors: ["Akamai"] published: 2025-05-01 -keywords: ['list','of','keywords','and key phrases'] +keywords: ['oracle vault','openbao','migrate secrets from oci','openbao helm install','linode kubernetes engine','oke to openbao','bao kv put','bao approle authentication','open source vault alternative','manage secrets on lke'] license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)' external_resources: -- '[Link Title 1](http://www.example.com)' -- '[Link Title 2](http://www.example.net)' +- '[Oracle Vault Documentation](https://docs.oracle.com/en-us/iaas/Content/KeyManagement/Concepts/keyoverview.htm)' +- '[Oracle `oci` CLI Documentation](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm)' +- '[OpenBao Configuration Documentation](https://openbao.org/docs/configuration/)' +- '[OpenBao Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/)' --- This guide walks through how to migrate secrets from Oracle Vault to OpenBao running on Linode. @@ -44,7 +46,7 @@ For example, you may have an application that uses services from multiple cloud In the Oracle Vault, find the vault you want to migrate, and review its existing secrets: -![](image1.png) +![Oracle Vault UI displaying secrets in selected vault.](oracle-vault-secret-list.png) You can also use the Oracle Cloud CLI (`oci`) to manage the secrets in your Oracle Vault. First, you will need the ID of the compartment to which the vault belongs. For example, the `credentials` vault in the image above belongs to the `web-application` compartment. @@ -138,7 +140,7 @@ Ensure that you securely handle any exposed secrets, as they will no longer bene Alternatively, the value of a secret can be viewed in the Oracle Vault UI by selecting the secret, selecting the latest version, and clicking **View Secret Contents**. -![](image2.png) +![Oracle Vault showing how to view the content of a selected secret.](oracle-vault-secret-value.png) Oracle Vault doesn’t use the concept of *roles* in a granular way, but it does use identity and access management (IAM) policies to control access. To adopt a permissions approach that uses RBAC in OpenBao, take the following steps: @@ -360,7 +362,7 @@ secret_access_key XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: ```command -curl --header "X-Vault-Token: s.Q9n7KPnLKSDoYnVdrHnphEml" \ +curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ --request GET \ $BAO_ADDR/v1/cloud-credentials/provider-a \ | jq @@ -422,25 +424,4 @@ For production environments, OpenBao should be deployed with fault tolerance and - **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. - **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. - -The resources below are provided to help you become familiar with OpenBao when migrating from Oracle Vault to Linode. - -## Additional Resources - -- Oracle Cloud - - [Vault Documentation](https://docs.oracle.com/en-us/iaas/Content/KeyManagement/Concepts/keyoverview.htm) - - [oci CLI Documentation](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm) -- OpenBao - - [Configuration Documentation](https://openbao.org/docs/configuration/) - - High Availability - - [Architectural Internals](https://openbao.org/docs/internals/high-availability/) - - [Detailed Concepts](https://openbao.org/docs/concepts/ha/) - - [Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/) - - [Vault client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) (compatible with OpenBao) for multiple programming languages -- Linode - - [Documentation](https://www.linode.com/docs/) - - [Linode Cloud Manager](https://cloud.linode.com/) - - [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) - - [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) - - [Deploying OpenBao through the Linode Marketplace](https://www.linode.com/docs/marketplace-docs/guides/openbao/) \ No newline at end of file +- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/image1.png b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/oracle-vault-secret-list.png similarity index 100% rename from docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/image1.png rename to docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/oracle-vault-secret-list.png diff --git a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/image2.png b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/oracle-vault-secret-value.png similarity index 100% rename from docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/image2.png rename to docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/oracle-vault-secret-value.png From b51ad2ae71d3635de1076f3271b98989f32e2b27 Mon Sep 17 00:00:00 2001 From: Adam Overa Date: Thu, 8 May 2025 19:16:24 -0400 Subject: [PATCH 5/8] Copy Edit 1 --- .../index.md | 546 +++++++------- .../index.md | 594 ++++++++------- .../index.md | 591 ++++++++------- .../index.md | 704 +++++++++--------- 4 files changed, 1192 insertions(+), 1243 deletions(-) diff --git a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md index be992afbdab..6062e6e4f3d 100644 --- a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,6 +1,6 @@ --- slug: migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine -title: "Migrate From AWS Secrets Manager to OpenBao on Linode Kubernetes Engine" +title: "Migrate From AWS Secrets Manager to OpenBao on Akamai Cloud" description: "Learn how to migrate secrets from AWS Secrets Manager to OpenBao on Linode Kubernetes Engine (LKE) using Helm and AppRole authentication." authors: ["Akamai"] contributors: ["Akamai"] @@ -13,38 +13,46 @@ external_resources: - '[OpenBao Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/)' --- -This guide walks through how to migrate secrets from AWS Secrets Manager to OpenBao running on Linode. +AWS Secrets Manager is a fully managed service that securely stores and retrieves sensitive information such as database credentials, API keys, and other application secrets. -AWS Secrets Manager is a fully managed service that securely stores and retrieves sensitive information such as database credentials, API keys, and other application secrets. [OpenBao](https://openbao.org/) is an open-source fork of [HashiCorp Vault](https://www.vaultproject.io/) designed to give organizations control over their cryptographic infrastructure. With OpenBao, organizations can deploy, configure, and manage keys and secrets in both cloud and on-premise environments without relying on vendor-managed services. +[OpenBao](https://openbao.org/) is an open source fork of [HashiCorp Vault](https://www.vaultproject.io/) that gives teams full control over how secrets are stored, encrypted, and accessed. Unlike managed platforms, OpenBao can be self-hosted in any environment, including on-premises and across multiple clouds. -An organization may choose to migrate from AWS Secrets Manager to OpenBao when it is looking for a cost-effective alternative to secrets management systems offered by major cloud providers. +This guide walks through how to migrate secrets from AWS Secrets Manager to OpenBao running on Akamai Cloud. -## Deploy OpenBao on Linode +## Before You Begin -When migrating from AWS Secrets Manager to OpenBao on Linode, your requirements will dictate whether to install OpenBao on a single Linode Compute Instance or to pursue a larger scale, more fault tolerant environment with OpenBao on Kubernetes through the Linode Kubernetes Engine (LKE). Follow the appropriate guide based on your requirements: +1. Follow our [Getting Started](https://techdocs.akamai.com/cloud-computing/docs/getting-started) guide to create an Akamai Cloud account if you do not already have one. -- [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) -- [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) +1. Create a personal access token using the instructions in our [Manage personal access tokens](https://techdocs.akamai.com/cloud-computing/docs/manage-personal-access-tokens) guide. + +1. Install the Linode CLI using the instructions in the [Install and configure the CLI](https://techdocs.akamai.com/cloud-computing/docs/install-and-configure-the-cli) guide. -In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your AWS account with sufficient permissions to work with AWS Secrets Manager. +1. Follow the steps in the *Install `kubectl`* section of the [Getting started with LKE](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-lke-linode-kubernetes-engine#install-kubectl) guide to install and configure `kubectl`. -## Migrate from AWS Secrets Manager to OpenBao +1. Ensure that you have access to your AWS account with sufficient permissions to work with AWS Secrets Manager. The [AWS CLI](https://aws.amazon.com/cli/) and [`eksctl`](https://eksctl.io/) must also be installed and configured. -When migrating from AWS Secrets Manager to OpenBao deployed on Linode, begin by determining your existing use cases for AWS Secrets Manager. +1. Install `jq`, a lightweight command line JSON processor. -### Assess Current Secrets Management Requirements in AWS +{{< note >}} +This guide is written for a non-root user. Commands that require elevated privileges are prefixed with `sudo`. If you’re not familiar with the `sudo` command, see the [Users and Groups](/docs/guides/linux-users-and-groups/) guide. +{{< /note >}} -Review how your organization uses AWS Secrets Manager. +## Review Existing Secrets in AWS Secrets Manager -For example, you may have a web application with a corresponding database dependency. Security best practices would dictate that you don’t hardcode secrets—such as database credentials—in the deployed application image or in the source code itself. Instead, the secrets would be injected directly into the deployment at runtime. The application would be granted a role for accessing the credentials in AWS Secrets Manager, which is provided for injection on-the-fly. This keeps the secret safe from being leaked via CI/CD processes or by being checked into a code repository. +Before migrating to OpenBao, evaluate how your organization currently uses AWS Secrets Manager. -### Review Existing Secrets +For example, a web application might rely on database credentials stored in AWS Secrets Manager. Rather than hardcoding these credentials in source code or container images, the application is assigned a role that allows it to retrieve them securely at runtime. This prevents secrets from being exposed through version control or CI/CD pipelines. + +OpenBao supports similar access workflows using dynamic injection, AppRole-based access control, and tight integration with Kubernetes workloads. + +### Review Secrets Using the AWS Console In the AWS Secrets Manager dashboard, review your existing secrets. ![AWS Secrets Manager showing list of stored secrets.](aws-secrets-manager-dashboard.png) +### Review Secrets Using the AWS CLI + Alternatively, using the AWS CLI can quickly provide insight into existing secrets and their usage. To list all secrets, run the following command: ```command @@ -86,319 +94,285 @@ AWS Secrets Manager uses AWS IAM to control access to secrets. As an example tha Replicating this setup using OpenBao will involve creating an [application role (AppRole)](https://openbao.org/docs/auth/approle/) to take the place of the AWS IAM role so that applications can use an API token associated with the AppRole to authenticate requests for the secret. -### Authenticate the CLI - -First, ensure that the OpenBao server is running. - -{{< note >}} -This guide assumes that the `BAO_ADDR` environment variable has been set. If you are working directly on a Linode, then an example value may be `http://0.0.0.0:8200`. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be `http://127.0.0.1:8200`. -{{< /note >}} - -Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with `bao login`, providing your root token. For example: - -```command -bao login --method=token s.36Yb3ijEOJbifprhdEiFtPhR -``` - -```output -WARNING! The BAO_TOKEN environment variable is set! The value of this variable will take precedence; if this is unwanted please unset BAO_TOKEN or update its value accordingly. - -Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. - -Key Value ---- ----- -token s.36Yb3ijEOJbifprhdEiFtPhR -token_accessor ykmfH8QV7E1OU86bth3GMCdf -token_duration ∞ -token_renewable false -token_policies ["root"] -identity_policies [] -policies ["root"] -``` - -### Unseal the OpenBao Vault - -OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. - -Before continuing, unseal the OpenBao vault. With unseal keys in hand, run the following command as many times as necessary to reach quorum (default is three), using a different unseal key for each execution: +## Deploy OpenBao on Akamai Cloud -```command -bao operator unseal -``` +When migrating from AWS Secrets Manager to OpenBao on Akamai Cloud, your deployment requirements determine whether to install OpenBao on a single Linode Instance or to deploy it in a fault-tolerant environment using the Linode Kubernetes Engine (LKE). Follow the appropriate guide below: -```output -Unseal Key (will be hidden): ******************************************** -``` +- [Deploying OpenBao on a Linode Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) +- [Deploying OpenBao on Linode Kubernetes Engine](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) +- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) -After quorum has been reached, the OpenBao status will show the following: +Regardless of the method used, make sure that: -```output -Key Value ---- ----- -Seal Type shamir -Initialized true -Sealed false -... -``` +- OpenBao is successfully initialized. +- The vault is unsealed. +- The `BAO_ADDR` environment variable is set. +- You are authenticated using the root token. ### Create a Policy and AppRole -Creating and using an OpenBao AppRole involves a few steps. +Use AppRoles to replicate AWS IAM-style access control in OpenBao. In AWS Secrets Manager, applications typically assume IAM roles (e.g. `DatabaseReader`) that permit secret retrieval via policies like `secretsmanager:GetSecretValue`. In OpenBao, equivalent functionality is achieved through policy-bound AppRoles that authorize secrets access through token-based authentication. -#### Step #1: Enable AppRole +Follow these steps to create an OpenBao AppRole that mimics IAM-based access used in AWS Secrets Manager. -[Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1) with the following CLI command: +#### Enable AppRole -```command -bao auth enable approle -``` +1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1): -```output -Success! Enabled approle auth method at: approle/ -``` + ```command + bao auth enable approle + ``` -#### Step #2: Create a Policy + ```output + Success! Enabled approle auth method at: approle/ + ``` -In `/etc/openbao`, [create a new policy](https://openbao.org/docs/concepts/policies/) file for reading the secret. For example, a new file called `db-secrets-policy.hcl` would have the following contents: +#### Create a Policy -```file {title="db-secrets-policy.hcl"} -path "database-credentials/*" { - capabilities = ["read"] -} -``` +2. [Create a new `.hcl` policy](https://openbao.org/docs/concepts/policies/) file in `/etc/openbao`, replacing {{< placeholder "POLICY_FILENAME" >}} (e.g. `db-secrets-policy.hcl`) with a policy filename of your choosing: -This policy grants read permissions to any secrets within the `database-credentials` secrets store path. Add the policy to OpenBao with the following command: + ```command + sudo nano /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + ``` -```command -bao policy write db-secrets-policy /etc/openbao/db-secrets-policy.hcl -``` + Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`) with your chosen mount path: -```output -Success! Uploaded policy: db-secrets-policy -``` + ```file {title="db-secrets-policy.hcl"} + path "{{< placeholder "SECRET_MOUNT_PATH" >}}/*" { + capabilities = ["read"] + } + ``` -#### Step #3: Create an AppRole with Policy Attached + This policy grants read access to any secrets within the specified mount path (e.g. `database-credentials`). -Create an AppRole for the application that will need to access this secret: + When done, press CTRL+X, followed by Y then Enter to save the file and exit `nano`. -```command -bao write \ - auth/approle/role/web-app-approle \ - token_policies=db-secrets-policy -``` +3. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `db-secrets-policy`) and {{< placeholder "POLICY_FILENAME" >}} (e.g. `db-secrets-policy.hcl`): -```output -Success! Data written to: auth/approle/role/web-app-approle -``` + ```command + bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + ``` -Verify that the AppRole was written successfully: + ```output + Success! Uploaded policy: db-secrets-policy + ``` -```command -bao read auth/approle/role/web-app-approle -``` +#### Create an AppRole -```output -Key Value ---- ----- -bind_secret_id true -local_secret_ids false -secret_id_bound_cidrs -secret_id_num_uses 0 -secret_id_ttl 0s -token_bound_cidrs [] -token_explicit_max_ttl 0s -token_max_ttl 0s -token_no_default_policy false -token_num_uses 0 -token_period 0s -token_policies [db-secrets-policy] -token_strictly_bind_ip false -token_ttl 0s -token_type default -``` +4. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`) and {{< placeholder "POLICY_NAME" >}} (e.g. `db-secrets-policy`): -Fetch the AppRole ID with the following command: + ```command + bao write auth/approle/role/{{< placeholder "APPROLE_NAME" >}} token_policies={{< placeholder "POLICY_NAME" >}} + ``` -```command -bao read auth/approle/role/web-app-approle/role-id -``` + ```output + Success! Data written to: auth/approle/role/web-app-approle + ``` -```output -Key Value ---- ----- -role_id 1d41b8be-03d2-6f61-702d-1731c957fd13 -``` - -#### Step #4: Generate secret ID - -Generate a secret ID for the role: +5. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): -```command -bao write -f auth/approle/role/web-app-approle/secret-id -``` + ```command + bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}} + ``` -```output -Key Value ---- ----- -secret_id 4eb6e604-681c-3fc3-bedd-a2dc774955bb -secret_id_accessor fe899dc6-85f7-f596-fb93-3c961f7919a9 -secret_id_num_uses 0 -secret_id_ttl 0s -``` - -#### Step #5: Generate API token - -Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. - -```command -bao write auth/approle/login \ - role_id="1d41b8be-03d2-6f61-702d-1731c957fd13" \ - secret_id="4eb6e604-681c-3fc3-bedd-a2dc774955bb" -``` - -```output -Key Value ---- ----- -token s.kpKsgWNtYLAktRYQT4BiMVMy -token_accessor Rwlq5EmvrHC8VvvHwoRyJzUh -token_duration 768h -token_renewable true -token_policies ["db-secrets-policy" "default"] -identity_policies [] -policies ["db-secrets-policy" "default"] -token_meta_role_name web-app-approle -``` - -The AppRole token (`s.kpKsgWNtYLAktRYQT4BiMVMy` in the previous example) can be used by a user, machine, or service—such a web application—to authenticate OpenBao API calls, giving the caller authorization to read the database credential secret. - -### Store the Secret - -Create the secret store that is defined in the policy. For this example, all secrets will be stored under the `database-credentials` path. Run the following command: - -```command -bao secrets enable --path=database-credentials kv -``` - -```output -Success! Enabled the kv secrets engine at: database-credentials/ -``` - -The database secret stored at AWS Secrets Manager had the following form: - -``` -{ - "username": "psqluser", - "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs!m$TudDxEe#", - "engine": "postgres", - "host": "psql.example-cloud.com", - "port": "5432", - "dbname": "web_app_production" -} -``` - -To store these key-value pairs in OpenBao underneath the `database-credentials` path as a secret named `psql`, run the following command: - -```command -bao kv put --mount=database-credentials psql \ - "username"="psqluser" \ - "password"="W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#" \ - "engine"="postgres" \ - "host"="psql.example-cloud.com" \ - "port"="5432" \ - "dbname"="web_app_production" -``` - -```output -Success! Data written to: database-credentials/psql -``` - -### Retrieve the Secret - -To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: - -```command -bao kv get --mount=database-credentials psql -``` - -```output -====== Data ====== -Key Value ---- ----- -dbname web_app_production -engine postgres -host psql.example-cloud.com -password W0H@Z52IGI0VjqoGS3xMkJ9SO533w.vault-tokenTudDxEe\# -port 5432 -username psqluser -``` - -Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: - -```command -curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ - --request GET \ - $BAO_ADDR/v1/database-credentials/psql \ - | jq -``` - -```output -{ - "request_id": "00237a0b-4349-351d-50a0-ef127534ed18", - "lease_id": "", - "renewable": false, - "lease_duration": 2764800, - "data": { - "dbname": "web_app_production", - "engine": "postgres", - "host": "psql.example-cloud.com", - "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w.vault-tokenTudDxEe#", - "port": "5432", - "username": "psqluser" - }, - "wrap_info": null, - "warnings": null, - "auth": null -} -``` + ```output + Key Value + --- ----- + bind_secret_id true + local_secret_ids false + secret_id_bound_cidrs + secret_id_num_uses 0 + secret_id_ttl 0s + token_bound_cidrs [] + token_explicit_max_ttl 0s + token_max_ttl 0s + token_no_default_policy false + token_num_uses 0 + token_period 0s + token_policies [db-secrets-policy] + token_strictly_bind_ip false + token_ttl 0s + token_type default + ``` -This API token can be used in applications and services to access the database credentials. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: +6. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): -- [Go](https://github.com/hashicorp/vault/tree/main/api) -- [Ruby](https://github.com/hashicorp/vault-ruby) -- [C#](https://github.com/rajanadar/VaultSharp) -- [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) -- [Kotlin](https://github.com/kunickiaj/vault-kotlin) -- [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) -- [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) -- [Python](https://github.com/hvac/hvac) + ```command + bao read auth/approle/role/web-app-approle/role-id + ``` -### Convert Existing Secrets from AWS Secrets Manager to OpenBao + ```output + Key Value + --- ----- + role_id 1d41b8be-03d2-6f61-702d-1731c957fd13 + ``` -The above steps outline how to migrate a single secret stored in AWS Secrets Manager to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in AWS Secrets Manager involves iterating on the following process: +#### Generate a Secret ID -1. Retrieve the secret in AWS. -1. Determine which entities (users, machines, and services) need read or write access to that secret. -1. Create a permissions policy and attach it to an AppRole in OpenBao. -1. Generate an API token for the AppRole. -1. Update any entity code or configurations to use the API token to access the secret in OpenBao. +7. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): + + ```command + bao write -f auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/secret-id + ``` + + ```output + Key Value + --- ----- + secret_id 4eb6e604-681c-3fc3-bedd-a2dc774955bb + secret_id_accessor fe899dc6-85f7-f596-fb93-3c961f7919a9 + secret_id_num_uses 0 + secret_id_ttl 0s + ``` + +#### Generate an API Token + +8. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `1d41b8be-03d2-6f61-702d-1731c957fd13`) and the {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `4eb6e604-681c-3fc3-bedd-a2dc774955bb`) from the previous commands: + + ```command + bao write auth/approle/login \ + role_id="{{< placeholder "APPROLE_ID" >}}" \ + secret_id="{{< placeholder "APPROLE_SECRET_ID" >}}" + ``` + + ```output + Key Value + --- ----- + token s.kpKsgWNtYLAktRYQT4BiMVMy + token_accessor Rwlq5EmvrHC8VvvHwoRyJzUh + token_duration 768h + token_renewable true + token_policies ["db-secrets-policy" "default"] + identity_policies [] + policies ["db-secrets-policy" "default"] + token_meta_role_name web-app-approle + ``` + + The AppRole token (e.g. `s.kpKsgWNtYLAktRYQT4BiMVMy`) can be used by a user, machine, or service, such a web application, to authenticate OpenBao API calls, giving the caller authorization to read the database credential secret. + +### Storing Secrets + +Create the secret store defined in the policy created above. + +1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`): + + ```command + bao secrets enable --path={{< placeholder "SECRET_MOUNT_PATH" >}} kv + ``` + + ```output + Success! Enabled the kv secrets engine at: database-credentials/ + ``` + + The example database secret stored at AWS Secrets Manager includes multiple fields stored as a JSON object: + + ``` + { + "username": "psqluser", + "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs!m$TudDxEe#", + "engine": "postgres", + "host": "psql.example-cloud.com", + "port": "5432", + "dbname": "web_app_production" + } + ``` + +1. Store this structured secret in the {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`) as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `psql`) like this: + + ```command + bao kv put --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} \ + "username"="psqluser" \ + "password"="W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#" \ + "engine"="postgres" \ + "host"="psql.example-cloud.com" \ + "port"="5432" \ + "dbname"="web_app_production" + ``` + + ```output + Success! Data written to: database-credentials/psql + ``` + +### Retrieving Secrets + +1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`) and {{< placeholder "SECRET_NAME" >}} (e.g. `psql`): + + ```command + bao kv get --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} + ``` + + ```output + ====== Data ====== + Key Value + --- ----- + dbname web_app_production + engine postgres + host psql.example-cloud.com + password W0H@Z52IGI0VjqoGS3xMkJ9SO533w.vault-tokenTudDxEe\# + port 5432 + username psqluser + ``` + +1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.36Yb3ijEOJbifprhdEiFtPhR`) saved earlier, {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`), and {{< placeholder "SECRET_NAME" >}} (e.g. `psql`): + + ```command + curl --header "X-Vault-Token: {{< placeholder "APPROLE_TOKEN" >}}" \ + --request GET \ + $BAO_ADDR/v1/{{< placeholder "SECRET_MOUNT_PATH" >}}/{{< placeholder "SECRET_NAME" >}} \ + | jq + ``` + + ```output + { + "request_id": "00237a0b-4349-351d-50a0-ef127534ed18", + "lease_id": "", + "renewable": false, + "lease_duration": 2764800, + "data": { + "dbname": "web_app_production", + "engine": "postgres", + "host": "psql.example-cloud.com", + "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w.vault-tokenTudDxEe#", + "port": "5432", + "username": "psqluser" + }, + "wrap_info": null, + "warnings": null, + "auth": null + } + ``` + + The AppRole token can be used by applications or services to retrieve secrets through the OpenBao API. + + {{< note >}} + According to the [OpenBao API documentation](https://openbao.org/api-docs/libraries/), OpenBao is API-compatible with HashiCorp Vault. This means most Vault client libraries should also work with OpenBao, including: + + - [Go](https://github.com/hashicorp/vault/tree/main/api) + - [Ruby](https://github.com/hashicorp/vault-ruby) + - [C#](https://github.com/rajanadar/VaultSharp) + - [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) + - [Kotlin](https://github.com/kunickiaj/vault-kotlin) + - [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) + - [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) + - [Python](https://github.com/hvac/hvac) + {{< /note >}} ## Production Considerations -When migrating from AWS Secrets Manager to OpenBao on Linode, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. +When migrating from AWS Secrets Manager to OpenBao on Akamai Cloud, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. ### Security For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. -- **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. -- **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. -- **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. -- **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. +- **Access Control Policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +- **Audit Logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +- **Secrets Lifecycle Management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +- **Securing Network Communication**: Configure OpenBao to [use TLS to encrypt](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. ### High Availability -For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. +For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly, and proactively monitor system health. -- **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. -- **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file +- **Raft Storage Backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +- **Deploy Multiple Nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +- **Monitor Leader Status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md index 718225acd14..1111a82cd39 100644 --- a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,6 +1,6 @@ --- slug: migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine -title: "Migrate From Azure Key Vault to OpenBao on Linode Kubernetes Engine" +title: "Migrate From Azure Key Vault to OpenBao on Akamai Cloud" description: "Migrate secrets from Azure Key Vault to OpenBao on Linode Kubernetes Engine (LKE) with Helm and RBAC for secure secret management." authors: ["Akamai"] contributors: ["Akamai"] @@ -14,359 +14,347 @@ external_resources: - '[OpenBao Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/)' --- -This guide walks through how to migrate secrets stored in Azure Key Vault to OpenBao running on Linode. +Azure Key Vault is a managed cloud service that secures secrets, keys, and certificates for application security and compliance in Microsoft Azure. It provides centralized control and access policies so that developers and security teams can safeguard sensitive information such as API keys or passwords. -Azure Key Vault is a managed cloud service designed to secure secrets, keys, and certificates for application security and compliance in Microsoft Azure. It provides centralized control and access policies so that developers and security teams can safeguard sensitive information such as API keys or passwords. +[OpenBao](https://openbao.org/) is an open source fork of [HashiCorp Vault](https://www.vaultproject.io/) that gives teams full control over how secrets are stored, encrypted, and accessed. Unlike managed platforms, OpenBao can be self-hosted in any environment, including on-premises and across multiple clouds. -[OpenBao](https://openbao.org/) is an open-source fork of [HashiCorp Vault](https://www.vaultproject.io/) designed to give organizations control over their cryptographic infrastructure. With OpenBao, organizations can deploy, configure, and manage keys and secrets in both cloud and on-premises environments without relying on vendor-managed services. +This guide walks through how to migrate secrets stored in Azure Key Vault to OpenBao running on Akamai Cloud. -For organizations needing customization, OpenBao’s open-source model provides cost efficiency and flexibility beyond what’s achievable within a managed service like Azure Key Vault, while still offering a scalable and secure solution for secrets management. +## Before You Begin -## Deploy OpenBao on Linode +1. Follow our [Getting Started](https://techdocs.akamai.com/cloud-computing/docs/getting-started) guide to create an Akamai Cloud account if you do not already have one. -When migrating from Azure Key Vault to OpenBao on Linode, your requirements will dictate whether to install OpenBao on a single Linode Compute Instance or to pursue a larger scale, more fault tolerant environment with OpenBao on Kubernetes through the Linode Kubernetes Engine (LKE). Follow the appropriate guide based on your requirements: +1. Create a personal access token using the instructions in our [Manage personal access tokens](https://techdocs.akamai.com/cloud-computing/docs/manage-personal-access-tokens) guide. -- [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) -- [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) +1. Install the Linode CLI using the instructions in the [Install and configure the CLI](https://techdocs.akamai.com/cloud-computing/docs/install-and-configure-the-cli) guide. -In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your Microsoft Azure account with sufficient permissions to work with Azure Key Vault. +1. Follow the steps in the *Install `kubectl`* section of the [Getting started with LKE](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-lke-linode-kubernetes-engine#install-kubectl) guide to install and configure `kubectl`. -## Migrate from Azure Key Vault to OpenBao +1. Ensure that you have access to your Azure account with sufficient permissions to work with Azure Key Vault. The [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) must also be installed and configured. -When migrating from Azure Key Vault to OpenBao deployed on Linode, begin by determining your existing use cases for Azure Key Vault. +1. Install `jq`, a lightweight command line JSON processor. -### Assess Current Secrets Management Requirements in Microsoft Azure +{{< note >}} +This guide is written for a non-root user. Commands that require elevated privileges are prefixed with `sudo`. If you’re not familiar with the `sudo` command, see the [Users and Groups](/docs/guides/linux-users-and-groups/) guide. +{{< /note >}} -Review how your organization uses Azure Key Vault. +## Review Existing Secrets in Azure Key Vault -For example, you may have an application which uses third-party services—such as an LLM platform or a digital payments process—and you use API keys to authenticate requests to those services. Security best practices would dictate that you don’t hardcode API keys in application source code or images. Instead, the API key would be injected directly into the deployment at runtime. The application would be granted a role for accessing the API key in Azure Key Vault, which is provided for injection on-the-fly. This keeps the secret safe from being leaked via CI/CD processes or by being checked into a code repository. +Before migrating to OpenBao, evaluate how your organization currently uses Azure Key Vault. -### Review Existing Secrets +For example, an application that uses third-party services, such as an LLM platform or a digital payment processor, might retrieve API keys at runtime using a role assignment. This ensures the keys aren't hardcoded into application images or checked into source control. -In the Azure Key Vault dashboard, review your existing secrets. +OpenBao offers similar capabilities using role-based access, dynamic injection, and integration with Kubernetes. -![Azure Key Vault UI showing list of secrets.](azure-key-vault-secret-list.png) +{{< note type="warning" >}} +Ensure that you securely handle any exposed secrets, as they no longer benefit from encryption by Azure Key Vault. +{{< /note >}} -You can also use the Azure CLI (`az`) to manage the secrets in your key vault. After authenticating the CLI, [list the secrets in your vault](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-list) by providing the name of your vault. For example: +### Review Secrets Using the Azure Portal -```command -az keyvault secret list \ - --vault-name "my-app-vault" \ - --query "\[\].name" -``` +1. Navigate to your key vault and open the **Secrets** tab: -```output -[ - "github-deploy-key", - "LLM-service-key", - "payments-service-dev-key", - "telemetry-export-api-key" -] -``` + ![Azure Key Vault UI showing list of secrets.](azure-key-vault-secret-list.png) -To see the [value of a single secret](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-show), run the following command, providing the names of the vault and the secret. +1. Select a secret, choose the latest version, then click **Show Secret Value**: -```command -az keyvault secret show \ - --vault-name "my-app-vault" \ - --name "LLM-service-key" \ - --query "value" -``` + ![Azure Key Vault UI showing how to view the value of a selected secret.](azure-key-vault-secret-value.png) -```output -"0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m\&RSa47jljP4nMVs7qG\#n87Lai46niZUCrLP" -``` +{{< note >}} +Azure uses IAM with role based access control (RBAC) to manage which users and services can access secrets. -Ensure that you securely handle any exposed secrets, as they will no longer benefit from encryption by Azure Key Vault. +For example, an Azure VM within your Resource Group might need access to the LLM service API key stored within your vault. The VM would be assigned the [`Key Vault Secrets User role`](https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-guide?tabs=azure-cli#azure-built-in-roles-for-key-vault-data-plane-operations), allowing it to read the contents of secrets in the vault. -Alternatively, the value of a secret can be viewed in the Azure Key Vault UI by selecting the secret, selecting the latest version, and clicking **Show Secret Value**. +To view role assignments in the Azure portal, navigate to your key vault, select **Access control (IAM)**, then open the **Role assignments** tab: -![Azure Key Vault UI showing how to view the value of a selected secret.](azure-key-vault-secret-value.png) +![Azure Key Vault Access control IAM role assignments tab.](azure-key-vault-access-control.png) +{{< /note >}} -Azure uses IAM with role based access control (RBAC) to manage access to a particular secret. For example, an Azure VM within your Resource Group might run the application workload which needs access to the LLM service API key stored within your vault. The VM would be assigned the [`Key Vault Secrets User role`](https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-guide?tabs=azure-cli#azure-built-in-roles-for-key-vault-data-plane-operations), allowing it to read the contents of secrets in the vault. +### Review Secrets Using the Azure CLI -To view access settings, navigate to **Access control (IAM)** within your vault, then click the **Role assignments** tab. +You can also use the Azure CLI (`az`) to manage the secrets in your key vault. -![Azure Key Vault Access control IAM role assignments tab.](azure-key-vault-access-control.png) +1. [List all the secrets in your vault](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-list) by specifying the {{< placeholder "VAULT_NAME" >}} (e.g. `my-app-vault`): -Replicating this setup using OpenBao involves the following steps: + ```command + az keyvault secret list \ + --vault-name "{{< placeholder "VAULT_NAME" >}}" \ + --query "\[\].name" + ``` -1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/) that will take the place of the Azure IAM role. -1. Store the LLM service API key in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). -1. Verify successful secret access with the API token associated with the AppRole. -1. Assign the AppRole to the applications that need access to the secret. + ```output + [ + "github-deploy-key", + "LLM-service-key", + "payments-service-dev-key", + "telemetry-export-api-key" + ] + ``` -### Authenticate the CLI +1. Retrieve the [value of a single secret](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-show) by providing both the {{< placeholder "VAULT_NAME" >}} (e.g. `my-app-vault`) and {{< placeholder "SECRET_NAME" >}} (e.g. `LLM-service-key`). -First, ensure that the OpenBao server is running. + ```command + az keyvault secret show \ + --vault-name "{{< placeholder "VAULT_NAME" >}}" \ + --name "{{< placeholder "SECRET_NAME" >}}" \ + --query "value" + ``` -{{< note >}} -This guide assumes that the `BAO_ADDR` environment variable has been set. If you are working directly on a Linode, then an example value may be `http://0.0.0.0:8200`. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be `http://127.0.0.1:8200`. -{{< /note >}} + ```output + "0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP" + ``` -Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with `bao login`, providing your root token. For example: +## Deploy OpenBao on Akamai Cloud -```command -bao login --method=token s.36Yb3ijEOJbifprhdEiFtPhR -``` +When migrating from Azure Key Vault to OpenBao on Akamai Cloud, your deployment requirements determine whether to install OpenBao on a single Linode Instance or to deploy it in a fault-tolerant environment using the Linode Kubernetes Engine (LKE). Follow the appropriate guide below: -```output -WARNING! The BAO_TOKEN environment variable is set! The value of this variable will take precedence; if this is unwanted please unset BAO_TOKEN or update its value accordingly. +- [Deploying OpenBao on a Linode Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) +- [Deploying OpenBao on Linode Kubernetes Engine](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) +- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) -Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. +Regardless of the method used, make sure that: -Key Value ---- ----- -token s.36Yb3ijEOJbifprhdEiFtPhR -token_accessor ykmfH8QV7E1OU86bth3GMCdf -token_duration ∞ -token_renewable false -token_policies ["root"] -identity_policies [] -policies ["root"] -``` +- OpenBao is successfully initialized. +- The vault is unsealed. +- The `BAO_ADDR` environment variable is set. +- You are authenticated using the root token. -### Unseal the OpenBao Vault +### Create a Policy and AppRole -OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. +Use AppRoles to replicate Azure’s IAM-based access control in OpenBao. In Azure Key Vault, access is granted to users or services through role assignments, such as the *Key Vault Secrets User* role. In OpenBao, equivalent functionality is implemented using policies attached to AppRoles. -Before continuing, unseal the OpenBao vault. +Follow these steps to create an OpenBao AppRole that mirrors the access control model used in Azure IAM. -### Create a Policy and AppRole +#### Enable AppRole + +1. Enable the AppRole authentication method: + + ```command + bao auth enable approle + ``` + + ```output + Success! Enabled approle auth method at: approle/ + ``` + +#### Create a Policy + +2. Create a new `.hcl` policy file in `/etc/openbao`, replacing {{< placeholder "POLICY_FILENAME" >}} (e.g. `api-keys-secrets-policy.hcl`) with a policy filename of your choosing: + + ```command + sudo nano /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + ``` + + Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`) with your chosen mount path: + + ```file {title="api-keys-secrets-policy.hcl"} + path "{{< placeholder "SECRET_MOUNT_PATH" >}}/*" { + capabilities = ["read"] + } + ``` + + This policy grants read access to any secrets within the specified mount path (e.g. `api-keys`). + + When done, press CTRL+X, followed by Y then Enter to save the file and exit `nano`. + +3. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `api-keys-secrets-policy`) and {{< placeholder "POLICY_FILENAME" >}} (e.g. `api-keys-secrets-policy.hcl`): + + ```command + bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + ``` + + ```output + Success! Uploaded policy: api-keys-secrets-policy + ``` + +#### Create an AppRole + +4. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `api-key-reader-approle`) and {{< placeholder "POLICY_NAME" >}} (e.g. `api-keys-secrets-policy`): + + ```command + bao write auth/approle/role/{{< placeholder "APPROLE_NAME" >}} token_policies={{< placeholder "POLICY_NAME" >}} + ``` + + ```output + Success! Data written to: auth/approle/role/api-key-reader-approle + ``` + +5. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `api-key-reader-approle`): + + ```command + bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}} + ``` + + ```output + Key Value + --- ----- + bind_secret_id true + local_secret_ids false + secret_id_bound_cidrs + secret_id_num_uses 0 + secret_id_ttl 0s + token_bound_cidrs [] + token_explicit_max_ttl 0s + token_max_ttl 0s + token_no_default_policy false + token_num_uses 0 + token_period 0s + token_policies [api-keys-secrets-policy] + token_strictly_bind_ip false + token_ttl 0s + token_type default + ``` + +6. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `api-key-reader-approle`): + + ```command + bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/role-id + ``` + + ```output + Key Value + --- ----- + role_id e633701e-893e-460d-8012-ea2afedbcd87 + ``` + +#### Generate a Secret ID + +7. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `api-key-reader-approle`): + + ```command + bao write -f auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/secret-id + ``` -Creating and using an OpenBao AppRole involves a few steps: - -1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). -1. [Create a policy](https://openbao.org/docs/concepts/policies/). -1. Create an AppRole, attaching the newly created policy. -1. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. -1. Generate an API token for the AppRole. - -Enable the AppRole authentication method with the following CLI command: - -```command -bao auth enable approle -``` - -```output -Success! Enabled approle auth method at: approle/ -``` - -In `/etc/openbao`, create a new policy file for reading the secret. For example, a new file called `api-keys-secrets-policy.hcl` would have the following contents: - -```file {title="api-keys-secrets-policy.hcl"} -path "api-keys/*" { - capabilities = ["read"] -} -``` - -This policy grants read permissions to any secrets within the `api-keys` secrets store path. Add the policy to OpenBao with the following command: - -```command -bao policy write \ - api-keys-secrets-policy \ - /etc/openbao/api-keys-secrets-policy.hcl -``` - -```output -Success! Uploaded policy: api-keys-secrets-policy -``` - -Create an AppRole for the application that will need to access this secret: - -```command -bao write \ - auth/approle/role/api-key-reader-approle \ - token_policies=api-keys-secrets-policy -``` - -```output -Success! Data written to: auth/approle/role/api-key-reader-approle -``` - -Verify that the AppRole was written successfully: - -```command -bao read auth/approle/role/api-key-reader-approle -``` - -```output -Key Value ---- ----- -bind_secret_id true -local_secret_ids false -secret_id_bound_cidrs -secret_id_num_uses 0 -secret_id_ttl 0s -token_bound_cidrs [] -token_explicit_max_ttl 0s -token_max_ttl 0s -token_no_default_policy false -token_num_uses 0 -token_period 0s -token_policies [api-keys-secrets-policy] -token_strictly_bind_ip false -token_ttl 0s -token_type default -``` - -Fetch the AppRole ID with the following command: - -```command -bao read auth/approle/role/api-key-reader-approle/role-id -``` - -```output -Key Value ---- ----- -role_id e633701e-893e-460d-8012-ea2afedbcd87 -``` - -Generate a secret ID for the role: - -```command -bao write -f auth/approle/role/api-key-reader-approle/secret-id -``` - -```output -Key Value ---- ----- -secret_id 725d9076-5a5c-4921-98f7-7535c767386a -secret_id_accessor b780e4d6-a2f2-4e03-8843-3e6a88b56f09 -secret_id_num_uses 0 -secret_id_ttl 0s -``` - -Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. - -```command -bao write auth/approle/login \ - role_id="e633701e-893e-460d-8012-ea2afedbcd87" \ - secret_id="725d9076-5a5c-4921-98f7-7535c767386a" -``` - -```output -Key Value ---- ----- -token s.TuQBY39kkpEDOqKcKYbWvpmZ -token_accessor N1qSJiqOz6mXlpbmFVT2LOfS -token_duration 768h -token_renewable true -token_policies ["api-keys-secrets-policy" "default"] -identity_policies [] -policies ["api-keys-secrets-policy" "default"] -token_meta_role_name api-key-reader-approle -``` - -The AppRole token (`s.TuQBY39kkpEDOqKcKYbWvpmZ` in the previous example) can be used by a user, machine, or service—such as a web application—to authenticate OpenBao API calls, giving the caller authorization to read the LLM service API key secret. - -### Store the Secret - -Create the secret store that is defined in the policy. For this example, all secrets will be stored under the `api-keys` path. Run the following command: - -```command -bao secrets enable --path=api-keys kv -``` - -```output -Success! Enabled the kv secrets engine at: api-keys/ -``` - -The LLM service API key secret stored at Azure Key Vault was a simple string: - -``` -0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP -``` - -To store this as a key-value pair in OpenBao underneath the `api-keys` path as a secret named `llm-service`, run the following command: - -```command -bao kv put --mount=api-keys llm-service \ - "key"="0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP" -``` - -```output -Success! Data written to: api-keys/llm-service -``` - -### Retrieve the Secret - -To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: - -```command -bao kv get --mount=api-keys llm-service -``` - -```output -====== Data ====== -Key Value ---- ----- -key 0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP -``` - -Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: - -```command -curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ - --request GET \ - $BAO_ADDR/v1/api-keys/llm-service \ - | jq -``` - -```output -{ - "request_id": "4ea9a66e-c63a-433c-b2e2-015c39c45086", - "lease_id": "", - "renewable": false, - "lease_duration": 2764800, - "data": { - "key": "0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP" - }, - "wrap_info": null, - "warnings": null, - "auth": null -} -``` - -This API token can be used in applications and services to access the API key secret. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: - -- [Go](https://github.com/hashicorp/vault/tree/main/api) -- [Ruby](https://github.com/hashicorp/vault-ruby) -- [C#](https://github.com/rajanadar/VaultSharp) -- [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) -- [Kotlin](https://github.com/kunickiaj/vault-kotlin) -- [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) -- [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) -- [Python](https://github.com/hvac/hvac) - -### Convert Existing Secrets from Azure Key Vault to OpenBao - -The above steps outline how to migrate a single secret stored in Azure Key Vault to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in Azure Key Vault involves iterating on the following process: - -1. Retrieve the secret in Azure Key Vault. -1. Determine which entities (users, machines, and services) need read or write access to that secret. -1. Create a permissions policy and attach it to an AppRole in OpenBao. -1. Generate an API token for the AppRole. -1. Update any entity code or configurations to use the API token to access the secret in OpenBao. + ```output + Key Value + --- ----- + secret_id 725d9076-5a5c-4921-98f7-7535c767386a + secret_id_accessor b780e4d6-a2f2-4e03-8843-3e6a88b56f09 + secret_id_num_uses 0 + secret_id_ttl 0s + ``` + +#### Generate an API Token + +8. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `e633701e-893e-460d-8012-ea2afedbcd87`) and the {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `725d9076-5a5c-4921-98f7-7535c767386a`) from the previous commands: + + ```command + bao write auth/approle/login \ + role_id=" {{< placeholder "APPROLE_ID" >}}" \ + secret_id="{{< placeholder "APPROLE_SECRET_ID" >}}" + ``` + + ```output + Key Value + --- ----- + token s.TuQBY39kkpEDOqKcKYbWvpmZ + token_accessor N1qSJiqOz6mXlpbmFVT2LOfS + token_duration 768h + token_renewable true + token_policies ["api-keys-secrets-policy" "default"] + identity_policies [] + policies ["api-keys-secrets-policy" "default"] + token_meta_role_name api-key-reader-approle + ``` + + The AppRole token (e.g. `s.TuQBY39kkpEDOqKcKYbWvpmZ`) can be used by a user, machine, or service, such a web application, to authenticate OpenBao API calls, giving the caller authorization to read the LLM service API key secret. + +### Storing Secrets + +Create the secret store defined in the policy created above. + +1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`): + + ```command + bao secrets enable --path={{< placeholder "SECRET_MOUNT_PATH" >}} kv + ``` + + ```output + Success! Enabled the kv secrets engine at: api-keys/ + ``` + +1. Store your {{< placeholder "SECRET_VALUE" >}} (e.g. `0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP`) in the {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`) as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `llm-service`): + + ```command + bao kv put --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} \ + "key"="{{< placeholder "SECRET_VALUE" >}}" + ``` + + ```output + Success! Data written to: api-keys/llm-service + ``` + +### Retrieving Secrets + +1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`) and {{< placeholder "SECRET_NAME" >}} (e.g. `llm-service`): + + ```command + bao kv get --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} + ``` + + ```output + ====== Data ====== + Key Value + --- ----- + key 0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP + ``` + +1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.36Yb3ijEOJbifprhdEiFtPhR`) saved earlier, {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`), and {{< placeholder "SECRET_NAME" >}} (e.g. `llm-service`): + + ```command + curl --header "X-Vault-Token: {{< placeholder "APPROLE_TOKEN" >}}" \ + --request GET \ + $BAO_ADDR/v1/{{< placeholder "SECRET_MOUNT_PATH" >}}/{{< placeholder "SECRET_NAME" >}} \ + | jq + ``` + + ```output + { + "request_id": "4ea9a66e-c63a-433c-b2e2-015c39c45086", + "lease_id": "", + "renewable": false, + "lease_duration": 2764800, + "data": { + "key": "0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP" + }, + "wrap_info": null, + "warnings": null, + "auth": null + } + ``` + + The AppRole token can be used by applications or services to retrieve secrets through the OpenBao API. + + {{< note >}} + According to the [OpenBao API documentation](https://openbao.org/api-docs/libraries/), OpenBao is API-compatible with HashiCorp Vault. This means most Vault client libraries should also work with OpenBao, including: + + - [Go](https://github.com/hashicorp/vault/tree/main/api) + - [Ruby](https://github.com/hashicorp/vault-ruby) + - [C#](https://github.com/rajanadar/VaultSharp) + - [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) + - [Kotlin](https://github.com/kunickiaj/vault-kotlin) + - [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) + - [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) + - [Python](https://github.com/hvac/hvac) + {{< /note >}} ## Production Considerations -When migrating from Azure Key Vault to OpenBao on Linode, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. +When migrating from Azure Key Vault to OpenBao on Akamai Cloud, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. ### Security For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. -- **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. -- **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. -- **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. -- **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. +- **Access Control Policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +- **Audit Logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +- **Secrets Lifecycle Management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +- **Securing Network Communication**: Configure OpenBao to [use TLS to encrypt](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. ### High Availability -For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. +For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly, and proactively monitor system health. -- **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. -- **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file +- **Raft Storage Backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +- **Deploy Multiple Nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +- **Monitor Leader Status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md index 39ba1876556..3e509c7cac9 100644 --- a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,6 +1,6 @@ --- slug: migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine -title: "Migrate From GCP Secret Manager to OpenBao on Linode Kubernetes Engine" +title: "Migrate From GCP Secret Manager to OpenBao on Akamai Cloud" description: "Migrate secrets from GCP Secret Manager to OpenBao on Linode Kubernetes Engine (LKE) using Helm charts and role-based access policies." authors: ["Akamai"] contributors: ["Akamai"] @@ -14,353 +14,348 @@ external_resources: - '[OpenBao Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/)' --- -This guide walks through how to migrate GCP Secret Manager secrets to OpenBao running Linode. +Google Cloud Platform (GCP) Secret Manager is a managed service that securely stores sensitive data like API keys, passwords, and certificates. It integrates with other GCP services and simplifies access control through Identity and Access Management (IAM). -GCP Secret Manager is a managed service designed to securely store and access sensitive information, such as API keys, passwords, certificates, and other confidential data. It integrates with GCP services. [OpenBao](https://openbao.org/) is an open-source fork of [HashiCorp Vault](https://www.vaultproject.io/) designed to give organizations control over their cryptographic infrastructure. With OpenBao, organizations can deploy, configure, and manage keys and secrets in both cloud and on-premises environments without relying on vendor-managed services. +[OpenBao](https://openbao.org/) is an open source fork of [HashiCorp Vault](https://www.vaultproject.io/) that gives teams full control over how secrets are stored, encrypted, and accessed. Unlike managed platforms, OpenBao can be self-hosted in any environment, including on-premises and across multiple clouds. -By considering the specific security and compliance needs of the organization, teams can determine whether the flexibility and cost-effectiveness of OpenBao or the managed convenience of GCP Secret Manager better align with their requirements. +This guide walks through how to migrate secrets from GCP Secret Manager to OpenBao running on Akamai Cloud. -## Deploy OpenBao on Linode +## Before You Begin -When migrating from GCP Secret Manager to OpenBao on Linode, your requirements will dictate whether to install OpenBao on a single Linode Compute Instance or to pursue a larger scale, more fault tolerant environment with OpenBao on Kubernetes through the Linode Kubernetes Engine (LKE). Follow the appropriate guide based on your requirements: +1. Follow our [Getting Started](https://techdocs.akamai.com/cloud-computing/docs/getting-started) guide to create an Akamai Cloud account if you do not already have one. -- [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) -- [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) +1. Create a personal access token using the instructions in our [Manage personal access tokens](https://techdocs.akamai.com/cloud-computing/docs/manage-personal-access-tokens) guide. -In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your GCP account with sufficient permissions to work with GCP Secret Manager. +1. Install the Linode CLI using the instructions in the [Install and configure the CLI](https://techdocs.akamai.com/cloud-computing/docs/install-and-configure-the-cli) guide. -## Migrate from GCP Secret Manager to OpenBao +1. Follow the steps in the *Install `kubectl`* section of the [Getting started with LKE](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-lke-linode-kubernetes-engine#install-kubectl) guide to install and configure `kubectl`. -When migrating from GCP Secret Manager to OpenBao deployed on Linode, begin by determining your existing use cases for GCP Secret Manager. +1. Ensure that you have access to your GCP account with sufficient permissions to work with GCP Secret Manager. The [gcloud CLI](https://cloud.google.com/sdk/docs/install) must also be installed and configured. -### Assess Current Secrets Management Requirements in GCP +1. Install `jq`, a lightweight command line JSON processor. -Review how your organization uses GCP Secret Manager. +{{< note >}} +This guide is written for a non-root user. Commands that require elevated privileges are prefixed with `sudo`. If you’re not familiar with the `sudo` command, see the [Users and Groups](/docs/guides/linux-users-and-groups/) guide. +{{< /note >}} -For example, you may have a web application which validates the authenticity of JSON Web Tokens (JWT) by verifying its signature. Security best practices would dictate that you don’t hardcode—in the deployed application image or in the source code itself—the JWT signing secret used for verification. Instead, the secret would be injected directly into the deployment at runtime. The application would be granted a role for accessing the JWT signing secret in GCP Secret Manager, which is provided for injection on-the-fly. This keeps the secret safe from being leaked via CI/CD processes or by being checked into a code repository. +## Review Existing Secrets in GCP Secret Manager -### Review Existing Secrets +Before migrating to OpenBao, evaluate how your organization currently uses GCP Secret Manager. -In the GCP Secret Manager dashboard, review your existing secrets. +For example, a web application might verify the signature of a JSON Web Token (JWT) using a secret key stored in GCP Secret Manager. Instead of hardcoding the secret in source code or container images, the application is granted a role that allows it to retrieve the secret at runtime. This protects the secret from being exposed through version control or CI/CD pipelines. -![GCP Secret Manager UI showing list of stored secrets.](gcp-secret-manager-secret-list.png) +OpenBao supports similar access workflows using dynamic injection, AppRole-based access control, and tight integration with Kubernetes workloads. -Alternatively, use the Google Cloud CLI (`gcloud`) to provide insight into your existing secrets and their usage. Authenticate the CLI. Then, [set the `gcloud` configuration to your current project](https://cloud.google.com/sdk/gcloud/reference/config/set). For example: +{{< note type="warning" >}} +Ensure that you securely handle any exported secrets, as they no longer benefit from encryption by GCP Secret Manager. +{{< /note >}} -```command -gcloud auth login -gcloud config set project ecommerce-application-454116 -``` +### Review Secrets Using the GCP Console -To [list all secrets](https://cloud.google.com/sdk/gcloud/reference/secrets/list), run the following command: +1. Navigate to **Security > Secret Manager** to list secrets: -```command -gcloud secrets list -``` + ![GCP Secret Manager UI showing list of stored secrets.](gcp-secret-manager-secret-list.png) -```output -NAME CREATED REPLICATION_POLICY LOCATIONS -billing_service_API_key 2025-03-01T12:25:36 automatic - -deploy_key 2025-02-28T04:04:58 automatic - -inventory_service_API_key 2024-11-15T16:35:35 automatic - -jwt-signing-secret 2025-03-08T12:01:30 automatic - -slack_webhook_url 2024-11-19T21:19:15 automatic - -``` +1. Select a secret, open the latest version, and click **Actions > View secret value**: -To see the [value of the latest version for a single secret](https://cloud.google.com/sdk/gcloud/reference/secrets/versions/access), run the following command: + ![GCP Secret Manager UI displaying how to value of a selected secret.](gcp-secret-manager-secret-value.png) -```command -gcloud secrets versions access latest --secret=jwt-signing-secret -``` +### Review Secrets Using the `gcloud` CLI -```output -EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW -``` +You can also use the `gcloud` CLI to authenticate and inspect the secrets stored in GCP Secret Manager. -Ensure that you securely handle any exported secrets, as they will no longer benefit from encryption by GCP Secret Manager. +1. Authenticate with the CLI: -Alternatively, secrets can be viewed in the GCP UI by selecting the secret, finding the latest version, and clicking **Actions > View secret value**. + ```command + gcloud auth login + ``` -![GCP Secret Manager UI displaying how to value of a selected secret.](gcp-secret-manager-secret-value.png) +1. Set the active project, replacing {{< placeholder "PROJECT_ID" >}} (e.g. `ecommerce-application-454116`) with your actual project ID: -GCP uses IAM to manage roles and principals with access to a particular secret. For example, a GCP Compute Instance might run an API that handles authentication for a web application. That workload may have an IAM role called `JWTSigner`, and the role has an attached policy which gives it read access to the `jwt-signing-secret` value in GCP Secret Manager. + ```command + gcloud config set project {{< placeholder "PROJECT_ID" >}} + ``` -Replicating this setup using OpenBao involves the following steps: +1. [List](https://cloud.google.com/sdk/gcloud/reference/secrets/list) all secrets: -1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/) that will take the place of the GCP IAM role. -1. Store the JWT signing secret in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). -1. Verify successful secret access with the API token associated with the AppRole. -1. Assign the AppRole to the applications that need access to the secret. + ```command + gcloud secrets list + ``` -### Authenticate the CLI + ```output + NAME CREATED REPLICATION_POLICY LOCATIONS + billing_service_API_key 2025-03-01T12:25:36 automatic - + deploy_key 2025-02-28T04:04:58 automatic - + inventory_service_API_key 2024-11-15T16:35:35 automatic - + jwt-signing-secret 2025-03-08T12:01:30 automatic - + slack_webhook_url 2024-11-19T21:19:15 automatic - + ``` -First, ensure that the OpenBao server is running. +1. Retrieve the [latest version](https://cloud.google.com/sdk/gcloud/reference/secrets/versions/access) of a secret, replacing {{< placeholder "SECRET_NAME" >}} (e.g. `jwt-signing-secret`) with an actual secret name: -{{< note >}} -This guide assumes that the `BAO_ADDR` environment variable has been set. If you are working directly on a Linode, then an example value may be `http://0.0.0.0:8200`. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be `http://127.0.0.1:8200`. -{{< /note >}} - -Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with `bao login`, providing your root token. For example: + ```command + gcloud secrets versions access latest --secret={{< placeholder "SECRET_NAME" >}} + ``` -```command -bao login --method=token s.36Yb3ijEOJbifprhdEiFtPhR -``` + ```output + EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW + ``` -```output -WARNING! The BAO_TOKEN environment variable is set! The value of this variable will take precedence; if this is unwanted please unset BAO_TOKEN or update its value accordingly. +## Deploy OpenBao on Akamai Cloud -Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. +When migrating from GCP Secret Manager to OpenBao on Akamai Cloud, your deployment requirements determine whether to install OpenBao on a single Linode Instance or to deploy it in a fault-tolerant environment using the Linode Kubernetes Engine (LKE). Follow the appropriate guide below: -Key Value ---- ----- -token s.36Yb3ijEOJbifprhdEiFtPhR -token_accessor ykmfH8QV7E1OU86bth3GMCdf -token_duration ∞ -token_renewable false -token_policies ["root"] -identity_policies [] -policies ["root"] -``` +- [Deploying OpenBao on a Linode Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) +- [Deploying OpenBao on Linode Kubernetes Engine](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) +- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) -### Unseal the OpenBao Vault +Regardless of the method used, make sure that: -OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. +- OpenBao is successfully initialized. +- The vault is unsealed. +- The `BAO_ADDR` environment variable is set. +- You are authenticated using the root token. -Before continuing, unseal the OpenBao vault. +Once these steps are complete, return to this guide to begin migrating secrets. ### Create a Policy and AppRole -Creating and using an OpenBao AppRole involves a few steps: - -1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). -1. [Create a policy](https://openbao.org/docs/concepts/policies/). -1. Create an AppRole, attaching the newly created policy. -1. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. -1. Generate an API token for the AppRole. - -Enable the AppRole authentication method with the following CLI command: - -```command -bao auth enable approle -``` - -```output -Success! Enabled approle auth method at: approle/ -``` - -In `/etc/openbao`, create a new policy file for reading the secret. For example, a new file called `jwt-secrets-policy.hcl` would have the following contents: - -```file {title="jwt-secrets-policy.hcl"} -path "jwt/*" { - capabilities = ["read"] -} -``` - -This policy grants read permissions to any secrets within the `jwt` secrets store path. Add the policy to OpenBao with the following command: - -```command -bao policy write jwt-secrets-policy /etc/openbao/jwt-secrets-policy.hcl -``` - -```output -Success! Uploaded policy: jwt-secrets-policy -``` - -Create an AppRole for the application that will need to access this secret: - -```command -bao write \ - auth/approle/role/app-authenticator-approle \ - token_policies=jwt-secrets-policy -``` - -```output -Success! Data written to: auth/approle/role/app-authenticator-approle -``` - -Verify that the AppRole was written successfully: - -```command -bao read auth/approle/role/app-authenticator-approle -``` - -```output -Key Value ---- ----- -bind_secret_id true -local_secret_ids false -secret_id_bound_cidrs -secret_id_num_uses 0 -secret_id_ttl 0s -token_bound_cidrs [] -token_explicit_max_ttl 0s -token_max_ttl 0s -token_no_default_policy false -token_num_uses 0 -token_period 0s -token_policies [jwt-secrets-policy] -token_strictly_bind_ip false -token_ttl 0s -token_type default -``` - -Fetch the AppRole ID with the following command: - -```command -bao read auth/approle/role/app-authenticator-approle/role-id -``` - -```output -Key Value ---- ----- -role_id 019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863 -``` - -Generate a secret ID for the role: - -```command -bao write -f auth/approle/role/app-authenticator-approle/secret-id -``` - -```output -Key Value ---- ----- -secret_id cef786fb-1d1c-4c52-9466-aea47b3c8d3a -secret_id_accessor 373500ba-6922-4f91-b7f3-ec25f8253d1d -secret_id_num_uses 0 -secret_id_ttl 0s -``` - -Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. - -```command -bao write auth/approle/login \ - role_id="019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863" \ - secret_id="cef786fb-1d1c-4c52-9466-aea47b3c8d3a" -``` - -```output -Key Value ---- ----- -token s.dy572yUtTNvHTZgIoxdNVO41 -token_accessor zT1TP281vORYSjysBiuMydht -token_duration 768h -token_renewable true -token_policies ["jwt-secrets-policy" "default"] -identity_policies [] -policies ["jwt-secrets-policy" "default"] -token_meta_role_name app-authenticator-approle -``` - -The AppRole token (`s.dy572yUtTNvHTZgIoxdNVO41` in the previous example) can be used by a user, machine, or service—such as the authentication API for a web application—to authenticate OpenBao API calls, giving the caller authorization to read the JWT signing secret. - -### Store the Secret - -Create the secret store that is defined in the policy. For this example, all secrets will be stored under the `jwt` path. Run the following command: - -```command -bao secrets enable --path=jwt kv -``` - -```output -Success! Enabled the kv secrets engine at: jwt/ -``` - -The JWT signing secret stored at GCP Secret Manager was a simple string: - -``` -EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW -``` - -To store this as a key-value pair in OpenBao underneath the `jwt` path as a secret named signer, run the following command: - -```command -bao kv put --mount=jwt signer \ - "secret"="EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW" -``` - -```output -Success! Data written to: jwt/signer -``` - -### Retrieve the Secret - -To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: - -```command -bao kv get --mount=jwt signer -``` - -```output -====== Data ====== -Key Value ---- ----- -secret EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW -``` - -Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: - -```command -curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ - --request GET \ - $BAO_ADDR/v1/jwt/signer \ - | jq -``` - -```output -{ - "request_id": "0e70b929-06b6-4685-b787-dc1ce6c31b9b", - "lease_id": "", - "renewable": false, - "lease_duration": 2764800, - "data": { - "secret": "EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW" - }, - "wrap_info": null, - "warnings": null, - "auth": null -} -``` - -This API token can be used in applications and services to access the JWT signing secret. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: - -- [Go](https://github.com/hashicorp/vault/tree/main/api) -- [Ruby](https://github.com/hashicorp/vault-ruby) -- [C#](https://github.com/rajanadar/VaultSharp) -- [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) -- [Kotlin](https://github.com/kunickiaj/vault-kotlin) -- [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) -- [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) -- [Python](https://github.com/hvac/hvac) - -### Convert Existing Secrets from GCP Secret Manager to OpenBao - -The above steps outline how to migrate a single secret stored in GCP Secret Manager to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in GCP Secret Manager involves iterating on the following process: - -1. Retrieve the secret in GCP. -1. Determine which entities (users, machines, and services) need read or write access to that secret. -1. Create a permissions policy and attach it to an AppRole in OpenBao. -1. Generate an API token for the AppRole. -1. Update any entity code or configurations to use the API token to access the secret in OpenBao. +To replicate GCP IAM-style access control, OpenBao provides AppRoles. For example, in GCP, a service might be granted a role like `JWTSigner` to retrieve a secret. In OpenBao, this same functionality is implemented using a policy-bound AppRole. + +Follow these steps to create an OpenBao AppRole that mimics the role-based access used in GCP IAM. + +#### Enable AppRole + +1. Enable the AppRole authentication method: + + ```command + bao auth enable approle + ``` + + ```output + Success! Enabled approle auth method at: approle/ + ``` + +#### Create a Policy + +2. Create a new `.hcl` policy file in `/etc/openbao`, replacing {{< placeholder "POLICY_FILENAME" >}} (e.g. `jwt-secrets-policy.hcl`) with a policy filename of your choosing: + + ```command + sudo nano /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + ``` + + Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`) with your chosen mount path: + + ```file {title="jwt-secrets-policy.hcl"} + path "{{< placeholder "SECRET_MOUNT_PATH" >}}/*" { + capabilities = ["read"] + } + ``` + + This policy grants read access to any secrets within the specified mount path (e.g. `jwt`). + + When done, press CTRL+X, followed by Y then Enter to save the file and exit `nano`. + +3. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `jwt-secrets-policy`) and {{< placeholder "POLICY_FILENAME" >}} (e.g. `jwt-secrets-policy.hcl`): + + ```command + bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + ``` + + ```output + Success! Uploaded policy: jwt-secrets-policy + ``` + +#### Create an AppRole + +4. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `app-authenticator-approle`) and {{< placeholder "POLICY_NAME" >}} (e.g. `jwt-secrets-policy`): + + ```command + bao write \ + auth/approle/role/{{< placeholder "APPROLE_NAME" >}} \ + token_policies={{< placeholder "POLICY_NAME" >}} + ``` + + ```output + Success! Data written to: auth/approle/role/app-authenticator-approle + ``` + +5. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `app-authenticator-approle`): + + ```command + bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}} + ``` + + ```output + Key Value + --- ----- + bind_secret_id true + local_secret_ids false + secret_id_bound_cidrs + secret_id_num_uses 0 + secret_id_ttl 0s + token_bound_cidrs [] + token_explicit_max_ttl 0s + token_max_ttl 0s + token_no_default_policy false + token_num_uses 0 + token_period 0s + token_policies [jwt-secrets-policy] + token_strictly_bind_ip false + token_ttl 0s + token_type default + ``` + +6. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `app-authenticator-approle`): + + ```command + bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/role-id + ``` + + ```output + Key Value + --- ----- + role_id 019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863 + ``` + +#### Generate a Secret ID + +7. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `app-authenticator-approle`):: + + ```command + bao write -f auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/secret-id + ``` + + ```output + Key Value + --- ----- + secret_id cef786fb-1d1c-4c52-9466-aea47b3c8d3a + secret_id_accessor 373500ba-6922-4f91-b7f3-ec25f8253d1d + secret_id_num_uses 0 + secret_id_ttl 0s + ``` + +#### Generate an API Token + +8. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863`) and {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `cef786fb-1d1c-4c52-9466-aea47b3c8d3a`) from the previous commands: + + ```command + bao write auth/approle/login \ + role_id="{{< placeholder "APPROLE_ID" >}}" \ + secret_id="{{< placeholder "APPROLE_SECRET_ID" >}}" + ``` + + ```output + Key Value + --- ----- + token s.dy572yUtTNvHTZgIoxdNVO41 + token_accessor zT1TP281vORYSjysBiuMydht + token_duration 768h + token_renewable true + token_policies ["jwt-secrets-policy" "default"] + identity_policies [] + policies ["jwt-secrets-policy" "default"] + token_meta_role_name app-authenticator-approle + ``` + + The AppRole token (e.g. `s.dy572yUtTNvHTZgIoxdNVO41`) can be used by a user, machine, or service, such as the authentication API for a web application, to authenticate OpenBao API calls, giving the caller authorization to read the JWT signing secret. + +### Storing Secrets + +Create the secret store defined in the policy created above. + +1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`): + + ```command + bao secrets enable --path={{< placeholder "SECRET_MOUNT_PATH" >}} kv + ``` + + ```output + Success! Enabled the kv secrets engine at: jwt/ + ``` + +1. Store your {{< placeholder "SECRET_VALUE" >}} (e.g. `EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW`) in the {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`) as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `signer`): + + ```command + bao kv put --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} \ + "secret"="{{< placeholder "SECRET_VALUE" >}}" + ``` + + ```output + Success! Data written to: jwt/signer + ``` + +### Retrieving Secrets + +1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`) and {{< placeholder "SECRET_NAME" >}} (e.g. `signer`): + + ```command + bao kv get --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} + ``` + + ```output + ====== Data ====== + Key Value + --- ----- + secret EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW + ``` + +1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.dy572yUtTNvHTZgIoxdNVO41`) saved earlier, {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`), and {{< placeholder "SECRET_NAME" >}} (e.g. `signer`): + + ```command + curl --header "X-Vault-Token: {{< placeholder "APPROLE_TOKEN" >}}" \ + --request GET \ + $BAO_ADDR/v1/{{< placeholder "SECRET_MOUNT_PATH" >}}/{{< placeholder "SECRET_NAME" >}} \ + | jq + ``` + + ```output + { + "request_id": "0e70b929-06b6-4685-b787-dc1ce6c31b9b", + "lease_id": "", + "renewable": false, + "lease_duration": 2764800, + "data": { + "secret": "EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW" + }, + "wrap_info": null, + "warnings": null, + "auth": null + } + ``` + + The AppRole token can be used by applications or services to retrieve secrets through the OpenBao API. + + {{< note >}} + According to the [OpenBao API documentation](https://openbao.org/api-docs/libraries/), OpenBao is API-compatible with HashiCorp Vault. This means most Vault client libraries should also work with OpenBao, including: + + - [Go](https://github.com/hashicorp/vault/tree/main/api) + - [Ruby](https://github.com/hashicorp/vault-ruby) + - [C#](https://github.com/rajanadar/VaultSharp) + - [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) + - [Kotlin](https://github.com/kunickiaj/vault-kotlin) + - [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) + - [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) + - [Python](https://github.com/hvac/hvac) + {{< /note >}} ## Production Considerations -When migrating from GCP Secret Manager to OpenBao on Linode, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. +When migrating from GCP Secret Manager to OpenBao on Akamai Cloud, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. ### Security For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. -- **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. -- **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. -- **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. -- **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. +- **Access Control Policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that only grant the necessary permissions, following the principle of least privilege. +- **Audit Logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +- **Secrets Lifecycle Management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +- **Securing Network Communication**: Configure OpenBao to [use TLS to encrypt](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. ### High Availability -For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. +For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly, and proactively monitor system health. -- **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. -- **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file +- **Raft Storage Backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +- **Deploy Multiple Nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +- **Monitor Leader Status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file diff --git a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md index 1a7590ba2d4..ea183aefdd4 100644 --- a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -1,6 +1,6 @@ --- slug: migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine -title: "Migrate From Oracle Vault to OpenBao on Linode Kubernetes Engine" +title: "Migrate From Oracle Vault to OpenBao on Akamai Cloud" description: "Securely migrate secrets from Oracle Vault to OpenBao on Linode Kubernetes Engine (LKE), using Helm and AppRole-based access control." authors: ["Akamai"] contributors: ["Akamai"] @@ -14,414 +14,406 @@ external_resources: - '[OpenBao Integrated Storage](https://openbao.org/docs/concepts/integrated-storage/)' --- -This guide walks through how to migrate secrets from Oracle Vault to OpenBao running on Linode. +Oracle Vault is a part of Oracle Cloud Infrastructure (OCI). It provides a secure, managed solution for storing and controlling access to sensitive information like API keys, passwords, and encryption keys. Oracle Vault is designed to integrate with other Oracle services, supporting features for key management, secret storage, and cryptographic functions. -Oracle Vault is a part of Oracle Cloud Infrastructure (OCI). It provides a secure, managed solution for storing and controlling access to sensitive information—such as API keys, passwords, and encryption keys. Oracle Vault is designed to integrate with other Oracle services, supporting features for key management, secret storage, and cryptographic functions. +[OpenBao](https://openbao.org/) is an open source fork of [HashiCorp Vault](https://www.vaultproject.io/) that gives teams full control over how secrets are stored, encrypted, and accessed. Unlike managed platforms, OpenBao can be self-hosted in any environment, including on-premises and across multiple clouds. -[OpenBao](https://openbao.org/) is an open-source fork of [HashiCorp Vault](https://www.vaultproject.io/) designed to give organizations control over their cryptographic infrastructure. With OpenBao, organizations can deploy, configure, and manage keys and secrets in both cloud and on-premises environments without relying on vendor-managed services. +This guide walks through how to migrate secrets from Oracle Vault to OpenBao running on Akamai Cloud. -Oracle Vault may be used by organizations deeply embedded in Oracle’s ecosystem, prioritizing managed services and compliance within OCI. For organizations needing more flexibility or multi-cloud compatibility, OpenBao’s open-source model helps avoid vendor lock-in, offering community-driven support and cost-effectiveness. +## Before You Begin -## Deploy OpenBao on Linode +1. Follow our [Getting Started](https://techdocs.akamai.com/cloud-computing/docs/getting-started) guide to create an Akamai Cloud account if you do not already have one. -When migrating from Oracle Vault to OpenBao on Linode, your requirements will dictate whether to install OpenBao on a single Linode Compute Instance or to pursue a larger scale, more fault tolerant environment with OpenBao on Kubernetes through the Linode Kubernetes Engine (LKE). Follow the appropriate guide based on your requirements: +1. Create a personal access token using the instructions in our [Manage personal access tokens](https://techdocs.akamai.com/cloud-computing/docs/manage-personal-access-tokens) guide. -- [Deploying OpenBao on a Linode Compute Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) -- [Deploying OpenBao on Kubernetes with Linode LKE](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) -- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) +1. Install the Linode CLI using the instructions in the [Install and configure the CLI](https://techdocs.akamai.com/cloud-computing/docs/install-and-configure-the-cli) guide. -In addition to the prerequisites needed for either of the above deployment methods, you will also need access to your Oracle Cloud account with sufficient permissions to work with Oracle Vault. +1. Follow the steps in the *Install `kubectl`* section of the [Getting started with LKE](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-lke-linode-kubernetes-engine#install-kubectl) guide to install and configure `kubectl`. -## Migrate from Oracle Vault to OpenBao - -When migrating from Oracle Vault to OpenBao deployed on Linode, begin by determining your existing use cases for Oracle Vault. +1. Ensure that you have access to your Oracle Cloud account with sufficient permissions to work with Oracle Vault. The [OCI CLI](https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm) must also be installed and configured -### Assess Current Secrets Management Requirements in Oracle Cloud +1. Install `jq`, a lightweight command line JSON processor. -Review how your organization uses Oracle Vault. +{{< note >}} +This guide is written for a non-root user. Commands that require elevated privileges are prefixed with `sudo`. If you’re not familiar with the `sudo` command, see the [Users and Groups](/docs/guides/linux-users-and-groups/) guide. +{{< /note >}} -For example, you may have an application that uses services from multiple cloud providers, and that application needs access keys to authenticate with those provider services. Security best practices would dictate that you don’t hardcode these sensitive credentials in application source code or images. Instead, the credentials would be injected directly into the deployment at runtime. The application would be granted a role for accessing the credentials in Oracle Vault, which is provided for injection on-the-fly. This keeps the secret safe from being leaked via CI/CD processes or by being checked into a code repository. +## Review Existing Secrets in Oracle Vault -### Review Existing Secrets +Before migrating to OpenBao, evaluate how your organization currently uses Oracle Vault. -In the Oracle Vault, find the vault you want to migrate, and review its existing secrets: +For example, an application that accesses services from multiple cloud providers might retrieve access keys stored in Oracle Vault. Granting access at runtime ensures that credentials aren’t embedded in code or exposed during deployment. -![Oracle Vault UI displaying secrets in selected vault.](oracle-vault-secret-list.png) +OpenBao supports equivalent secret injection workflows through AppRole and Kubernetes integration. -You can also use the Oracle Cloud CLI (`oci`) to manage the secrets in your Oracle Vault. First, you will need the ID of the compartment to which the vault belongs. For example, the `credentials` vault in the image above belongs to the `web-application` compartment. +{{< note type="warning" >}} +Ensure that you securely handle any exposed secrets, as they no longer benefit from encryption by Oracle Vault. +{{< /note >}} -After authenticating the CLI, find the compartment ID with the following command: +### Review Secrets Using the Oracle Console + +1. Navigate to **Security > Vault**, select your vault, and open the **Secrets** tab: + + ![Oracle Vault UI displaying secrets in selected vault.](oracle-vault-secret-list.png) + +1. Select a secret, go to the latest version, and click **View Secret Contents**: + + ![Oracle Vault showing how to view the content of a selected secret.](oracle-vault-secret-value.png) + +### Review Secrets Using the OCI CLI + +You can also use the Oracle Cloud CLI (`oci`) to manage the secrets in your Oracle Vault. -```command -oci iam compartment list --query 'data[]["name","id"]' -``` +1. Authenticate with the OCI CLI. You must have configured your API key, tenancy OCID, and user OCID. Run a basic command to confirm authentication: + + ```command + oci iam region list + ``` + +1. Identify the compartment that contains your vault: + + ```command + oci iam compartment list --query 'data[]["name","id"]' + ``` + + In the example above, the `credentials` vault belongs to the `web-application` compartment: + + ```output + [ + [ + "web-application", "ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq" + ] + ] + ``` + +1. [List the secrets in your vault](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/vault/secret/list.html) by specifying the {{< placeholder "COMPARTMENT_ID" >}} (e.g. `ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq`): + + ```command + oci vault secret list \ + --compartment-id {{< placeholder "COMPARTMENT_ID" >}} \ + --query 'data[].["secret-name","description","id"]' + ``` + + ```output + [ + [ + "cloud_provider_a", + "Access key ID and secret access key for provider", + "ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea" + ], + [ + "cloud_provider_b", + "Project ID and project API KEY", + "ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqacnhdzfprgd4f4ml7rpkjqmqlyz7p5kjjfinvyn57qdoa" + ], + [ + "cloud_provider_c", + "Client ID and client secret", + "ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqavn32ibazaqinya5bv3eyc4ndfvebcnksnqk4vl74xqqa" + ] + ] + ``` + +1. Retrieve the [value of a secret](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/secrets/secret-bundle/get.html) by specifying its {{< placeholder "SECRET_ID" >}} (e.g. `ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea`): + + ```command + oci secrets secret-bundle get \ + --secret-id {{< placeholder "SECRET_ID" >}} \ + --stage CURRENT \ + --query 'data."secret-bundle-content"' + ``` + + ```output + { + "content": + "eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ==", + "content-type": "BASE64" + } + ``` + +1. If the secret bundle `content-type` is `BASE64` (e.g. `eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ==`), you must decode it to reveal the original value: + + ```command + echo {{< placeholder "BASE64_ENCODED_SECRET" >}} \ + | base64 --decode + ``` + + ```output + { "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } + ``` + + {{< note >}} + You can also retrieve and decode the secret in a single command: + + ```command + oci secrets secret-bundle get \ + --secret-id {{< placeholder "SECRET_ID" >}} \ + --stage CURRENT \ + --query 'data."secret-bundle-content".content' \ + --raw-output \ + | base64 --decode + ``` + + ```output + { "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } + ``` + {{< /note >}} + +## Deploy OpenBao on Akamai Cloud + +When migrating from Oracle Vault to OpenBao on Akamai Cloud, your deployment requirements determine whether to install OpenBao on a single Linode Instance or to deploy it in a fault-tolerant environment using the Linode Kubernetes Engine (LKE). Follow the appropriate guide below: + +- [Deploying OpenBao on a Linode Instance](https://docs.google.com/document/d/1x30v1xT_EDuRNnhE9jv5VkFqj9Lo4N3kNO6ICOoSrOM/edit?usp=sharing) +- [Deploying OpenBao on Linode Kubernetes Engine](https://docs.google.com/document/d/1gS6hQg09Ufr1Ku0v528acLESnyj1ZpXTxLhkLIlP-u8/edit?usp=sharing) +- [Deploying OpenBao through the Linode Marketplace](/docs/marketplace-docs/guides/openbao/) -```output -[ - [ - "web-application", "ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq" - ] -] -``` +Regardless of the method used, make sure that: -Find the ID of the compartment with your vault. To [list the secrets in your vaults](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/vault/secret/list.html), run the following command, using the compartment ID: +- OpenBao is successfully initialized. +- The vault is unsealed. +- The `BAO_ADDR` environment variable is set. +- You are authenticated using the root token. -```command -oci vault secret list \ - --compartment-id \ -ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq \ - --query 'data[].["secret-name","description","id"]' -``` +### Create a Policy and AppRole -```output -[ - [ - "cloud_provider_a", - "Access key ID and secret access key for provider", -"ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea" - ], - [ - "cloud_provider_b", - "Project ID and project API KEY", -"ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqacnhdzfprgd4f4ml7rpkjqmqlyz7p5kjjfinvyn57qdoa" - ], - [ - "cloud_provider_c", - "Client ID and client secret", -"ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqavn32ibazaqinya5bv3eyc4ndfvebcnksnqk4vl74xqqa" - ] -] -``` +To replicate Oracle IAM-style access control in OpenBao, use AppRoles. While Oracle Vault manages permissions through IAM policies instead of granular roles, OpenBao allows you to assign access through policy-bound AppRoles. -To retrieve the [value of a secret](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/secrets/secret-bundle/get.html), run the following command, providing the secret ID: +Follow these steps to create an OpenBao AppRole that mirrors access controls used in Oracle IAM. -```command -oci secrets secret-bundle get \ - --secret-id ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea \ - --stage CURRENT \ - --query 'data."secret-bundle-content"' -``` +#### Enable AppRole -```output -{ - "content": -"eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ==", - "content-type": "BASE64" -} -``` +1. Enable the AppRole authentication method: -If the secret bundle `content` is of type `BASE64`, then decode it to retrieve the value of the secret. For example: + ```command + bao auth enable approle + ``` -```command -echo eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ== \ - | base64 --decode -``` + ```output + Success! Enabled approle auth method at: approle/ + ``` -```output -{ "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } -``` +#### Create a Policy -To combine secret retrieval with base64 decoding into a single step, run the following command: +2. Create a new `.hcl` policy file in `/etc/openbao`, replacing {{< placeholder "POLICY_FILENAME" >}} (e.g. `cloud-credentials-policy.hcl`) with a policy filename of your choosing: -```command -oci secrets secret-bundle get \ - --secret-id ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea \ - --stage CURRENT \ - --query 'data."secret-bundle-content".content' \ - --raw-output \ - | base64 --decode -``` + ```command + sudo nano /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + ``` -```output -{ "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } -``` + Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`) with your chosen mount path: -Ensure that you securely handle any exposed secrets, as they will no longer benefit from encryption by Oracle Vault. + ```file {title="cloud-credentials-policy.hcl"} + path "{{< placeholder "SECRET_MOUNT_PATH" >}}/*" { + capabilities = ["read"] + } + ``` -Alternatively, the value of a secret can be viewed in the Oracle Vault UI by selecting the secret, selecting the latest version, and clicking **View Secret Contents**. + This policy grants read access to any secrets within the specified mount path (e.g. `cloud-credentials`). -![Oracle Vault showing how to view the content of a selected secret.](oracle-vault-secret-value.png) - -Oracle Vault doesn’t use the concept of *roles* in a granular way, but it does use identity and access management (IAM) policies to control access. To adopt a permissions approach that uses RBAC in OpenBao, take the following steps: - -1. Create an OpenBao [application role (AppRole)](https://openbao.org/docs/auth/approle/), attaching a policy that allows access to these cloud provider credential secrets. -1. Store the credential secrets in the OpenBao [key/value (KV) store](https://openbao.org/docs/secrets/kv/). -1. Verify successful secret access with the API token associated with the AppRole. -1. Assign the AppRole to the applications that need access to these secrets. - -### Authenticate the CLI - -First, ensure that the OpenBao server is running. + When done, press CTRL+X, followed by Y then Enter to save the file and exit `nano`. -{{< note >}} -This guide assumes that the `BAO_ADDR` environment variable has been set. If you are working directly on a Linode, then an example value may be `http://0.0.0.0:8200`. If you are using LKE and have set up port forwarding from your cluster to a port on your local machine, then an example value may be `http://127.0.0.1:8200`. -{{< /note >}} +3. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `cloud-credentials-policy`) and {{< placeholder "POLICY_FILENAME" >}} (e.g. `cloud-credentials-policy.hcl`): -Retrieve the initial root token you were given when OpenBao was initialized. Authenticate the CLI with bao login, providing your root token. For example: + ```command + bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + ``` -```command -bao login --method=token s.36Yb3ijEOJbifprhdEiFtPhR -``` + ```output + Success! Uploaded policy: cloud-credentials-policy + ``` -```output -WARNING! The BAO_TOKEN environment variable is set! The value of this variable will take precedence; if this is unwanted please unset BAO_TOKEN or update its value accordingly. +#### Create an AppRole -Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "bao login" again. Future OpenBao requests will automatically use this token. +4. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `cloud-credential-reader-approle`) and {{< placeholder "POLICY_NAME" >}} (e.g. `cloud-credentials-policy`): -Key Value ---- ----- -token s.36Yb3ijEOJbifprhdEiFtPhR -token_accessor ykmfH8QV7E1OU86bth3GMCdf -token_duration ∞ -token_renewable false -token_policies ["root"] -identity_policies [] -policies ["root"] -``` + ```command + bao write \ + auth/approle/role/{{< placeholder "APPROLE_NAME" >}} \ + token_policies={{< placeholder "POLICY_NAME" >}} + ``` -### Unseal the OpenBao Vault + ```output + Success! Data written to: auth/approle/role/cloud-credential-reader-approle + ``` -OpenBao uses a [*sealing* and *unsealing* mechanism](https://openbao.org/docs/concepts/seal/) to protect its stored data, ensuring that sensitive information remains encrypted and inaccessible while the data is sealed. When OpenBao starts, it is initially sealed by a distributed key. Authorized users or automation systems must then unseal OpenBao by providing a quorum of key shares, which reassembles the master key and allows access to stored secrets. This architecture ensures that even if the server is compromised, the sensitive data remains protected unless the unseal keys are presented. +5. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `cloud-credential-reader-approle`): -Before continuing, unseal the OpenBao vault. + ```command + bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}} + ``` -### Create a Policy and AppRole + ```output + Key Value + --- ----- + bind_secret_id true + local_secret_ids false + secret_id_bound_cidrs + secret_id_num_uses 0 + secret_id_ttl 0s + token_bound_cidrs [] + token_explicit_max_ttl 0s + token_max_ttl 0s + token_no_default_policy false + token_num_uses 0 + token_period 0s + token_policies [cloud-credentials-secrets-policy] + token_strictly_bind_ip false + token_ttl 0s + token_type default + ``` + +6. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `cloud-credential-reader-approle`): + + ```command + bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/role-id + ``` + + ```output + Key Value + --- ----- + role_id c8663988-136f-42de-af40-1dfb94f0c1f6 + ``` + +#### Generate a Secret ID -Creating and using an OpenBao AppRole involves a few steps: - -1. [Enable the AppRole authentication method](https://openbao.org/docs/auth/approle/#via-the-api-1). -1. [Create a policy](https://openbao.org/docs/concepts/policies/). -1. Create an AppRole, attaching the newly created policy. -1. Generate a [secret ID](https://developer.hashicorp.com/vault/docs/concepts/policies#policy-syntax) for the AppRole. -1. Generate an API token for the AppRole. - -Enable the AppRole authentication method with the following CLI command: - -```command -bao auth enable approle -``` - -```output -Success! Enabled approle auth method at: approle/ -``` - -In `/etc/openbao`, create a new policy file for reading the secret. For example, a new file called `cloud-credentials-policy.hcl` would have the following contents: - -```file {title="cloud-credentials-policy.hcl"} -path "cloud-credentials/*" { - capabilities = ["read"] -} -``` - -This policy grants read permissions to any secrets within the `cloud-credentials` secrets store path. Add the policy to OpenBao with the following command: - -```command -bao policy write \ - cloud-credentials-policy \ - /etc/openbao/cloud-credentials-policy.hcl -``` - -```output -Success! Uploaded policy: cloud-credentials-policy -``` - -Create an AppRole for the application that will need to access this secret: - -```command -bao write \ - auth/approle/role/cloud-credential-reader-approle \ - token_policies=cloud-credentials-policy -``` - -```output -Success! Data written to: auth/approle/role/cloud-credential-reader-approle -``` - -Verify that the AppRole was written successfully: - -```command -bao read auth/approle/role/cloud-credential-reader-approle -``` - -```output -Key Value ---- ----- -bind_secret_id true -local_secret_ids false -secret_id_bound_cidrs -secret_id_num_uses 0 -secret_id_ttl 0s -token_bound_cidrs [] -token_explicit_max_ttl 0s -token_max_ttl 0s -token_no_default_policy false -token_num_uses 0 -token_period 0s -token_policies [cloud-credentials-secrets-policy] -token_strictly_bind_ip false -token_ttl 0s -token_type default -``` - -Fetch the AppRole ID with the following command: - -```command -bao read auth/approle/role/cloud-credential-reader-approle/role-id -``` - -```output -Key Value ---- ----- -role_id c8663988-136f-42de-af40-1dfb94f0c1f6 -``` - -Generate a secret ID for the role: - -```command -bao write -f auth/approle/role/cloud-credential-reader-approle/secret-id -``` - -```output -Key Value ---- ----- -secret_id 9b9c27a3-dc27-4eea-921f-773164ec17c7 -secret_id_accessor 20abfad4-029f-45e8-a749-ecc041ff3554 -secret_id_num_uses 0 -secret_id_ttl 0s -``` - -Generate an API token for the AppRole, supplying the AppRole ID and the secret ID from the previous commands. - -```command -bao write auth/approle/login \ - role_id="c8663988-136f-42de-af40-1dfb94f0c1f6" \ - secret_id="9b9c27a3-dc27-4eea-921f-773164ec17c7" -``` - -```output -Key Value ---- ----- -token s.Q9n7KPnLKSDoYnVdrHnphEml -token_accessor LkSCfmBQVCfL8s2eX4EfnqO4 -token_duration 768h -token_renewable true -token_policies ["cloud-credentials-secrets-policy" "default"] -identity_policies [] -policies ["cloud-credentials-secrets-policy" "default"] -token_meta_role_name cloud-credential-reader-approle -``` - -The AppRole token (`s.Q9n7KPnLKSDoYnVdrHnphEml` in the previous example) can be used by a user, machine, or service—such as an infrastructure management application—to authenticate OpenBao API calls, giving the caller authorization to read the cloud provider credentials secrets. - -### Store the Secret - -Create the secret store that is defined in the policy. For this example, all secrets will be stored under the `api-keys` path. Run the following command: - -```command -bao secrets enable --path=cloud-credentials kv -``` - -```output -Success! Enabled the kv secrets engine at: cloud-credentials/ -``` - -The `cloud_provider_a` secret stored at Oracle Vault was two key-value pairs, stored as JSON: - -``` -{ "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } -``` - -To store these key-value pairs in OpenBao underneath the `cloud-credentials` path as a secret named `provider_a`, run the following command: - -```command -bao kv put --mount=cloud-credentials provider-a \ - "access_key_id"="AKIA513J2DDRAXCFKXF5" \ - "secret_access_key"="XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" -``` - -```output -Success! Data written to: cloud-credentials/provider-a -``` - -### Retrieve the Secret - -To retrieve this secret with the OpenBao CLI, while still authenticated with the root token, run the following command: - -```command -bao kv get --mount=cloud-credentials provider-a -``` - -```output -====== Data ====== -Key Value ---- ----- -access_key_id AKIA513J2DDRAXCFKXF5 -secret_access_key XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x -``` - -Test that the AppRole can retrieve the secret, using the AppRole token saved earlier: - -```command -curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ - --request GET \ - $BAO_ADDR/v1/cloud-credentials/provider-a \ - | jq -``` - -```output -{ - "request_id": "92c5026e-bb14-4e2a-8d70-e94fb005183f", - "lease_id": "", - "renewable": false, - "lease_duration": 2764800, - "data": { - "access_key_id": "AKIA513J2DDRAXCFKXF5", - "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" - }, - "wrap_info": null, - "warnings": null, - "auth": null -} -``` - -This API token can be used in applications and services to access the cloud provider credentials secrets. According to the [documentation](https://openbao.org/api-docs/libraries/), “OpenBao intends to remain API compatible with HashiCorp Vault. This means that most of the existing libraries for Vault should also work with OpenBao.” Vault has [client libraries](https://developer.hashicorp.com/vault/api-docs/libraries) for various programming languages: - -- [Go](https://github.com/hashicorp/vault/tree/main/api) -- [Ruby](https://github.com/hashicorp/vault-ruby) -- [C#](https://github.com/rajanadar/VaultSharp) -- [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) -- [Kotlin](https://github.com/kunickiaj/vault-kotlin) -- [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) -- [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) -- [Python](https://github.com/hvac/hvac) - -### Convert Existing Secrets from Oracle Vault to OpenBao - -The above steps outline how to migrate a single secret stored in Oracle Vault to OpenBao on Linode, using RBAC for authorizing an application to read that secret with an API token. Migrating the remainder of your secrets stored in Oracle Vault involves iterating on the following process: - -1. Retrieve the secret in Oracle Vault. -1. Determine which entities (users, machines, and services) need read or write access to that secret. -1. Create a permissions policy and attach it to an AppRole in OpenBao. -1. Generate an API token for the AppRole. -1. Update any entity code or configurations to use the API token to access the secret in OpenBao. +7. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `cloud-credential-reader-approle`): + + ```command + bao write -f auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/secret-id + ``` + + ```output + Key Value + --- ----- + secret_id 9b9c27a3-dc27-4eea-921f-773164ec17c7 + secret_id_accessor 20abfad4-029f-45e8-a749-ecc041ff3554 + secret_id_num_uses 0 + secret_id_ttl 0s + ``` + +#### Generate an API Token + +8. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `c8663988-136f-42de-af40-1dfb94f0c1f6`) and {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `9b9c27a3-dc27-4eea-921f-773164ec17c7`) from the previous commands: + + ```command + bao write auth/approle/login \ + role_id="{{< placeholder "APPROLE_ID" >}}" \ + secret_id="{{< placeholder "APPROLE_SECRET_ID" >}}" + ``` + + ```output + Key Value + --- ----- + token s.Q9n7KPnLKSDoYnVdrHnphEml + token_accessor LkSCfmBQVCfL8s2eX4EfnqO4 + token_duration 768h + token_renewable true + token_policies ["cloud-credentials-secrets-policy" "default"] + identity_policies [] + policies ["cloud-credentials-secrets-policy" "default"] + token_meta_role_name cloud-credential-reader-approle + ``` + + The AppRole token (`s.Q9n7KPnLKSDoYnVdrHnphEml` in the previous example) can be used by a user, machine, or service, such as an infrastructure management application, to authenticate OpenBao API calls, giving the caller authorization to read the cloud provider credentials secrets. + +### Storing Secrets + +Create the secret store defined in the policy created above. + +1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`): + + ```command + bao secrets enable --path={{< placeholder "SECRET_MOUNT_PATH" >}} kv + ``` + + ```output + Success! Enabled the kv secrets engine at: cloud-credentials/ + ``` + +1. Store your {{< placeholder "SECRET_VALUE" >}} (e.g. `{ "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" }`) in the {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`) as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `provider-a`): + + ```command + bao kv put --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} \ + "secret"="{{< placeholder "SECRET_VALUE" >}}" + ``` + + ```output + Success! Data written to: cloud-credentials/provider-a + ``` + +### Retrieving Secrets + +1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`) and {{< placeholder "SECRET_NAME" >}} (e.g. `provider-a`): + + ```command + bao kv get --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} + ``` + + ```output + ====== Data ====== + Key Value + --- ----- + access_key_id AKIA513J2DDRAXCFKXF5 + secret_access_key XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x + ``` + +1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.36Yb3ijEOJbifprhdEiFtPhR`) saved earlier, {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`), and {{< placeholder "SECRET_NAME" >}} (e.g. `provider-a`): + + ```command + curl --header "X-Vault-Token: {{< placeholder "APPROLE_TOKEN" >}}" \ + --request GET \ + $BAO_ADDR/v1/{{< placeholder "SECRET_MOUNT_PATH" >}}/{{< placeholder "SECRET_NAME" >}} \ + | jq + ``` + + ```output + { + "request_id": "92c5026e-bb14-4e2a-8d70-e94fb005183f", + "lease_id": "", + "renewable": false, + "lease_duration": 2764800, + "data": { + "access_key_id": "AKIA513J2DDRAXCFKXF5", + "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" + }, + "wrap_info": null, + "warnings": null, + "auth": null + } + ``` + + The AppRole token can be used by applications or services to retrieve secrets through the OpenBao API. + + {{< note >}} + According to the [OpenBao API documentation](https://openbao.org/api-docs/libraries/), OpenBao is API-compatible with HashiCorp Vault. This means most Vault client libraries should also work with OpenBao, including: + + - [Go](https://github.com/hashicorp/vault/tree/main/api) + - [Ruby](https://github.com/hashicorp/vault-ruby) + - [C#](https://github.com/rajanadar/VaultSharp) + - [Java](https://developer.hashicorp.com/vault/api-docs/libraries#java) + - [Kotlin](https://github.com/kunickiaj/vault-kotlin) + - [Node.js](https://developer.hashicorp.com/vault/api-docs/libraries#node-js) + - [PHP](https://developer.hashicorp.com/vault/api-docs/libraries#php) + - [Python](https://github.com/hvac/hvac) + {{< /note >}} ## Production Considerations -When migrating from Oracle Vault to OpenBao on Linode, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. +When migrating from Oracle Vault to OpenBao on Akamai Cloud, it's important to ensure your deployment is secure, resilient, and optimized for performance. This section covers key security and high availability considerations to help you maintain a reliable and protected secrets management system. ### Security For a production-grade OpenBao deployment, security should be a top priority. Protecting secrets from unauthorized access, ensuring secure communication, and enforcing strict access controls are essential to maintaining a secure environment. -- **Access control policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. -- **Audit logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. -- **Secrets lifecycle management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. -- **Securing network communication**: Configure OpenBao to [use TLS for encrypting](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. +- **Access Control Policies**: Use OpenBao's [policy](https://openbao.org/docs/concepts/policies/) system to enforce RBAC. Define granular policies that grant only the necessary permissions, following the principle of least privilege. +- **Audit Logging**: Enable [detailed audit logs](https://openbao.org/docs/configuration/log-requests-level/) to track all access and modifications to secrets. OpenBao supports multiple logging backends, such as syslog and file-based logs, to help monitor suspicious activity. +- **Secrets Lifecycle Management**: Implement automated secrets rotation, revocation, and expiration to ensure secrets do not become stale or overexposed. Consider using dynamic secrets where possible to generate time-limited credentials. +- **Securing Network Communication**: Configure OpenBao to [use TLS to encrypt](https://openbao.org/docs/configuration/listener/tcp/#configuring-tls) all communications, ensuring data in transit remains secure. Regularly rotate TLS certificates to prevent expiration-related outages and reduce the risk of compromised certificates. ### High Availability -For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly and proactively monitor system health. +For production environments, OpenBao should be deployed with fault tolerance and scalability in mind. OpenBao’s [Autopilot mode](https://openbao.org/docs/concepts/integrated-storage/autopilot) for [high availability](https://openbao.org/docs/internals/high-availability/) ensures that if the active node fails, the cluster automatically elects a new leader, maintaining uptime without manual intervention. However, to enable seamless failover, organizations must configure their deployment correctly, and proactively monitor system health. -- **Raft storage backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. -- **Deploy multiple nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. -- **Monitor leader status**: Use [bao operator raft list-peers](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file +- **Raft Storage Backend**: Use OpenBao’s [integrated storage](https://openbao.org/docs/internals/integrated-storage/), based on the [Raft protocol](https://thesecretlivesofdata.com/raft/), to enable distributed data replication across multiple nodes. This ensures data consistency and fault tolerance while reducing reliance on external storage backends. Configure regular Raft snapshots for disaster recovery. +- **Deploy Multiple Nodes**: OpenBao recommends at least five nodes for a [high-availability deployment](https://openbao.org/docs/concepts/ha/). The active node handles all requests, while standby nodes remain ready to take over in case of failure. +- **Monitor Leader Status**: Use [`bao operator raft list-peers`](https://openbao.org/docs/commands/operator/raft/#list-peers) to check the cluster’s leader and node statuses. This command helps ensure that standby nodes are correctly registered and ready for failover. \ No newline at end of file From 16d2de6626441e3282175902c1eb4ea9f2a14d20 Mon Sep 17 00:00:00 2001 From: Adam Overa Date: Fri, 9 May 2025 12:23:50 -0400 Subject: [PATCH 6/8] Layout Change 1 --- .../index.md | 155 +++++++++++++++--- 1 file changed, 133 insertions(+), 22 deletions(-) diff --git a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md index 6062e6e4f3d..1e1d08d60d3 100644 --- a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -37,6 +37,31 @@ This guide walks through how to migrate secrets from AWS Secrets Manager to Open This guide is written for a non-root user. Commands that require elevated privileges are prefixed with `sudo`. If you’re not familiar with the `sudo` command, see the [Users and Groups](/docs/guides/linux-users-and-groups/) guide. {{< /note >}} +Additionally, this guide contains a number of placeholders that are intended to be replaced by your own unique values. The table below lists these placeholders, what they represent, and the example values used in this guide: + +| Placeholder | Represents | Example Value | +|-------------------------------------------|-------------------------------------------------------------------------|-----------------------------------------------| +| `{{< placeholder "SECRET_NAME" >}}` | The name of the secret in AWS and OpenBao. | `psql` | +| `{{< placeholder "SECRET_MOUNT_PATH" >}}` | The KV mount path used in OpenBao to organize secrets. | `database-credentials` | +| `{{< placeholder "POLICY_FILENAME" >}}` | The name of the file containing the OpenBao policy. | `db-secrets-policy.hcl` | +| `{{< placeholder "POLICY_NAME" >}}` | The name used to refer to the policy in OpenBao. | `db-secrets-policy` | +| `{{< placeholder "APPROLE_NAME" >}}` | The name used to identify the AppRole in OpenBao. | `web-app-approle` | +| `{{< placeholder "APPROLE_ID" >}}` | The AppRole ID generated by OpenBao. | `1d41b8be-03d2-6f61-702d-1731c957fd13` | +| `{{< placeholder "APPROLE_SECRET_ID" >}}` | The secret ID tied to the AppRole. | `4eb6e604-681c-3fc3-bedd-a2dc774955bb` | +| `{{< placeholder "APPROLE_TOKEN" >}}` | The API token generated using AppRole login. | `s.kpKsgWNtYLAktRYQT4BiMVMy` | +| `{{< placeholder "SECRET_KEY_X" >}}` | A key in a structured secret (repeatable). | `username`, `password`, `engine`, `host`, `port`, `dbname` | +| `{{< placeholder "SECRET_VALUE_X" >}}` | The value associated with a `SECRET_KEY_X` (repeatable). | `psqluser`, `W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#`, `postgres`, `psql.example-cloud.com`, `5432`, `web_app_production` | + +"username"="psqluser" \ + "password"="W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#" \ + "engine"="postgres" \ + "host"="psql.example-cloud.com" \ + "port"="5432" \ + "dbname"="web_app_production +{{< note >}} +All of the example values used in this guide are purely examples to mimic the format of actual secrets. These are *not* real credentials to any exisiting systems. +{{< /note >}} + ## Review Existing Secrets in AWS Secrets Manager Before migrating to OpenBao, evaluate how your organization currently uses AWS Secrets Manager. @@ -45,6 +70,10 @@ For example, a web application might rely on database credentials stored in AWS OpenBao supports similar access workflows using dynamic injection, AppRole-based access control, and tight integration with Kubernetes workloads. +{{< note type="warning" >}} +Ensure that you securely handle any exposed secrets, as they no longer benefit from encryption by AWS Secrets Manager. +{{< /note >}} + ### Review Secrets Using the AWS Console In the AWS Secrets Manager dashboard, review your existing secrets. @@ -67,7 +96,17 @@ aws secretsmanager list-secrets --query 'SecretList[*].Name' ] ``` -To retrieve the secret value for a specific secret, use the secret name with the `get-secret-value` command. For example: +To retrieve the secret value for a specific secret, use the {{< placeholder "SECRET_NAME" >}} with the `get-secret-value` command: + +```command +aws secretsmanager get-secret-value \ + --secret-id {{< placeholder "SECRET_NAME" >}} \ + --query SecretString \ + --output text \ + | jq +``` + +**For Example**: ```command aws secretsmanager get-secret-value \ @@ -88,7 +127,7 @@ aws secretsmanager get-secret-value \ } ``` -In AWS Secrets Manager, secrets are stored either as key/value pairs or as plaintext. In the previous example, the single `psql-credentials` secret is a set of key/value pairs. Ensure that you securely handle any exposed secrets, as they will no longer benefit from encryption by AWS Secrets Manager. +In AWS Secrets Manager, secrets are stored either as key/value pairs or as plaintext. In the previous example, the single `psql-credentials` secret is a set of key/value pairs. AWS Secrets Manager uses AWS IAM to control access to secrets. As an example that adopts role-based access control (RBAC), a role such as `DatabaseReader` might have a policy attached that allows the `secretsmanager:GetSecretValue` action on the `psql-credentials` resource. Then, the web application that accesses the database would be given the `DatabaseReader` role so that it can obtain the secret values which would allow it to connect to the database. @@ -135,46 +174,78 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use sudo nano /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} ``` - Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`) with your chosen mount path: + **For Example:** - ```file {title="db-secrets-policy.hcl"} + ```command + sudo nano /etc/openbao/db-secrets-policy.hcl + ``` + +1. Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`) with your chosen mount path: + + ```file {title="POLICY_FILENAME.hcl"} path "{{< placeholder "SECRET_MOUNT_PATH" >}}/*" { capabilities = ["read"] } ``` + **For Example**: + + ```file {title="db-secrets-policy.hcl"} + path "database-credentials/*" { + capabilities = ["read"] + } + ``` + This policy grants read access to any secrets within the specified mount path (e.g. `database-credentials`). When done, press CTRL+X, followed by Y then Enter to save the file and exit `nano`. -3. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `db-secrets-policy`) and {{< placeholder "POLICY_FILENAME" >}} (e.g. `db-secrets-policy.hcl`): +1. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `db-secrets-policy`) and {{< placeholder "POLICY_FILENAME" >}} (e.g. `db-secrets-policy.hcl`): ```command bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} ``` + **For Example**: + + ```command + bao policy write db-secrets-policy /etc/openbao/db-secrets-policy.hcl + ``` + ```output Success! Uploaded policy: db-secrets-policy ``` #### Create an AppRole -4. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`) and {{< placeholder "POLICY_NAME" >}} (e.g. `db-secrets-policy`): +5. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`) and {{< placeholder "POLICY_NAME" >}} (e.g. `db-secrets-policy`): ```command bao write auth/approle/role/{{< placeholder "APPROLE_NAME" >}} token_policies={{< placeholder "POLICY_NAME" >}} ``` + **For Example**: + + ```command + bao write auth/approle/role/web-app-approle token_policies=db-secrets-policy + ``` + ```output Success! Data written to: auth/approle/role/web-app-approle ``` -5. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): +1. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): ```command bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}} ``` + **For Example**: + + ```command + bao read auth/approle/role/web-app-approle + ``` + ```output Key Value --- ----- @@ -195,7 +266,13 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use token_type default ``` -6. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): +1. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): + + ```command + bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/role-id + ``` + + **For Example**: ```command bao read auth/approle/role/web-app-approle/role-id @@ -209,12 +286,18 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use #### Generate a Secret ID -7. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): +8. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): ```command bao write -f auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/secret-id ``` + **For Example**: + + ```command + bao write -f auth/approle/role/web-app-approle/secret-id + ``` + ```output Key Value --- ----- @@ -226,7 +309,7 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use #### Generate an API Token -8. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `1d41b8be-03d2-6f61-702d-1731c957fd13`) and the {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `4eb6e604-681c-3fc3-bedd-a2dc774955bb`) from the previous commands: +9. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `1d41b8be-03d2-6f61-702d-1731c957fd13`) and the {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `4eb6e604-681c-3fc3-bedd-a2dc774955bb`) from the previous commands: ```command bao write auth/approle/login \ @@ -234,6 +317,14 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use secret_id="{{< placeholder "APPROLE_SECRET_ID" >}}" ``` + **For Example**: + + ```command + bao write auth/approle/login \ + role_id="{{< placeholder "1d41b8be-03d2-6f61-702d-1731c957fd13" >}}" \ + secret_id="{{< placeholder "4eb6e604-681c-3fc3-bedd-a2dc774955bb" >}}" + ``` + ```output Key Value --- ----- @@ -259,27 +350,32 @@ Create the secret store defined in the policy created above. bao secrets enable --path={{< placeholder "SECRET_MOUNT_PATH" >}} kv ``` + **For Example**: + + ```command + bao secrets enable --path=database-credentials kv + ``` + ```output Success! Enabled the kv secrets engine at: database-credentials/ ``` - The example database secret stored at AWS Secrets Manager includes multiple fields stored as a JSON object: +1. The example database secret stored at AWS Secrets Manager includes multiple fields stored as a JSON object. Store a structured secret such as this in the {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`) as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `psql`) like this: - ``` - { - "username": "psqluser", - "password": "W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs!m$TudDxEe#", - "engine": "postgres", - "host": "psql.example-cloud.com", - "port": "5432", - "dbname": "web_app_production" - } + ```command + bao kv put --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} \ + "{{< placeholder "SECRET_KEY_1" >}}"="{{< placeholder "SECRET_VALUE_1" >}}" \ + "{{< placeholder "SECRET_KEY_2" >}}"="{{< placeholder "SECRET_VALUE_2" >}}" \ + "{{< placeholder "SECRET_KEY_3" >}}"="{{< placeholder "SECRET_VALUE_3" >}}" \ + "{{< placeholder "SECRET_KEY_4" >}}"="{{< placeholder "SECRET_VALUE_4" >}}" \ + "{{< placeholder "SECRET_KEY_5" >}}"="{{< placeholder "SECRET_VALUE_5" >}}" \ + "{{< placeholder "SECRET_KEY_6" >}}"="{{< placeholder "SECRET_VALUE_6" >}}" ``` -1. Store this structured secret in the {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`) as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `psql`) like this: + **For Example**: ```command - bao kv put --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} \ + bao kv put --mount=database-credentials psql \ "username"="psqluser" \ "password"="W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#" \ "engine"="postgres" \ @@ -300,6 +396,12 @@ Create the secret store defined in the policy created above. bao kv get --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} ``` + **For Example**: + + ```command + bao kv get --mount=database-credentials psql + ``` + ```output ====== Data ====== Key Value @@ -321,6 +423,15 @@ Create the secret store defined in the policy created above. | jq ``` + **For Example**: + + ```command + curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ + --request GET \ + $BAO_ADDR/v1/database-credentials/psql \ + | jq + ``` + ```output { "request_id": "00237a0b-4349-351d-50a0-ef127534ed18", From 19085e5f943c318aedea418036e6202901326805 Mon Sep 17 00:00:00 2001 From: Adam Overa Date: Fri, 9 May 2025 12:24:38 -0400 Subject: [PATCH 7/8] Typo Fix 1 --- .../index.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md index 1e1d08d60d3..ed3c1ad29ea 100644 --- a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -52,12 +52,6 @@ Additionally, this guide contains a number of placeholders that are intended to | `{{< placeholder "SECRET_KEY_X" >}}` | A key in a structured secret (repeatable). | `username`, `password`, `engine`, `host`, `port`, `dbname` | | `{{< placeholder "SECRET_VALUE_X" >}}` | The value associated with a `SECRET_KEY_X` (repeatable). | `psqluser`, `W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#`, `postgres`, `psql.example-cloud.com`, `5432`, `web_app_production` | -"username"="psqluser" \ - "password"="W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#" \ - "engine"="postgres" \ - "host"="psql.example-cloud.com" \ - "port"="5432" \ - "dbname"="web_app_production {{< note >}} All of the example values used in this guide are purely examples to mimic the format of actual secrets. These are *not* real credentials to any exisiting systems. {{< /note >}} From 7a22467c39f73175f59048f694a5b48fed0f0f73 Mon Sep 17 00:00:00 2001 From: Adam Overa Date: Thu, 15 May 2025 21:13:19 -0400 Subject: [PATCH 8/8] Copy Edit 2 --- .../index.md | 65 +++---- .../index.md | 161 +++++++++++++--- .../index.md | 150 ++++++++++++--- .../index.md | 176 +++++++++++++++--- 4 files changed, 450 insertions(+), 102 deletions(-) diff --git a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md index ed3c1ad29ea..bf7a898a915 100644 --- a/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-aws-secrets-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -39,18 +39,19 @@ This guide is written for a non-root user. Commands that require elevated privil Additionally, this guide contains a number of placeholders that are intended to be replaced by your own unique values. The table below lists these placeholders, what they represent, and the example values used in this guide: -| Placeholder | Represents | Example Value | -|-------------------------------------------|-------------------------------------------------------------------------|-----------------------------------------------| -| `{{< placeholder "SECRET_NAME" >}}` | The name of the secret in AWS and OpenBao. | `psql` | -| `{{< placeholder "SECRET_MOUNT_PATH" >}}` | The KV mount path used in OpenBao to organize secrets. | `database-credentials` | -| `{{< placeholder "POLICY_FILENAME" >}}` | The name of the file containing the OpenBao policy. | `db-secrets-policy.hcl` | -| `{{< placeholder "POLICY_NAME" >}}` | The name used to refer to the policy in OpenBao. | `db-secrets-policy` | -| `{{< placeholder "APPROLE_NAME" >}}` | The name used to identify the AppRole in OpenBao. | `web-app-approle` | -| `{{< placeholder "APPROLE_ID" >}}` | The AppRole ID generated by OpenBao. | `1d41b8be-03d2-6f61-702d-1731c957fd13` | -| `{{< placeholder "APPROLE_SECRET_ID" >}}` | The secret ID tied to the AppRole. | `4eb6e604-681c-3fc3-bedd-a2dc774955bb` | -| `{{< placeholder "APPROLE_TOKEN" >}}` | The API token generated using AppRole login. | `s.kpKsgWNtYLAktRYQT4BiMVMy` | -| `{{< placeholder "SECRET_KEY_X" >}}` | A key in a structured secret (repeatable). | `username`, `password`, `engine`, `host`, `port`, `dbname` | -| `{{< placeholder "SECRET_VALUE_X" >}}` | The value associated with a `SECRET_KEY_X` (repeatable). | `psqluser`, `W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#`, `postgres`, `psql.example-cloud.com`, `5432`, `web_app_production` | +| Placeholder | Represents | Example Value | +|-------------------------------------------|----------------------------------------------------------|------------------------------------------------| +| `{{< placeholder "AWS_SECRET_NAME" >}}` | The name of the secret in AWS. | `psql` | +| `{{< placeholder "SECRET_MOUNT_PATH" >}}` | The KV mount path used in OpenBao to organize secrets. | `database-credentials` | +| `{{< placeholder "POLICY_FILE" >}}` | The name of the file containing the OpenBao policy. | `db-secrets-policy.hcl` | +| `{{< placeholder "POLICY_NAME" >}}` | The name used to refer to the policy in OpenBao. | `db-secrets-policy` | +| `{{< placeholder "APPROLE_NAME" >}}` | The name used to identify the AppRole in OpenBao. | `web-app-approle` | +| `{{< placeholder "APPROLE_ID" >}}` | The AppRole ID generated by OpenBao. | `1d41b8be-03d2-6f61-702d-1731c957fd13` | +| `{{< placeholder "APPROLE_SECRET_ID" >}}` | The secret ID tied to the AppRole. | `4eb6e604-681c-3fc3-bedd-a2dc774955bb` | +| `{{< placeholder "APPROLE_TOKEN" >}}` | The API token generated using AppRole login. | `s.kpKsgWNtYLAktRYQT4BiMVMy` | +| `{{< placeholder "SECRET_NAME" >}}` | The name of the secret in OpenBao. | `psql` | +| `{{< placeholder "SECRET_KEY_X" >}}` | A key in a structured secret (repeatable). | `username`, `password`, `engine`, `host`, `port`, `dbname` | +| `{{< placeholder "SECRET_VALUE_X" >}}` | The value associated with a `SECRET_KEY_X` (repeatable). | `psqluser`, `W0H@Z52IGI0VjqoGS3xMkJ9SO533w$fcfrmzs.vault-tokenTudDxEe\#`, `postgres`, `psql.example-cloud.com`, `5432`, `web_app_production` | {{< note >}} All of the example values used in this guide are purely examples to mimic the format of actual secrets. These are *not* real credentials to any exisiting systems. @@ -76,7 +77,7 @@ In the AWS Secrets Manager dashboard, review your existing secrets. ### Review Secrets Using the AWS CLI -Alternatively, using the AWS CLI can quickly provide insight into existing secrets and their usage. To list all secrets, run the following command: +Alternatively, use the AWS CLI can quickly provide insight into existing secrets and their usage. To list all secrets, run the following command: ```command aws secretsmanager list-secrets --query 'SecretList[*].Name' @@ -90,11 +91,11 @@ aws secretsmanager list-secrets --query 'SecretList[*].Name' ] ``` -To retrieve the secret value for a specific secret, use the {{< placeholder "SECRET_NAME" >}} with the `get-secret-value` command: +To retrieve the secret value for a specific secret, use the {{< placeholder "AWS_SECRET_NAME" >}} (e.g. `jwt-signing-secret`) with the `get-secret-value` command: ```command aws secretsmanager get-secret-value \ - --secret-id {{< placeholder "SECRET_NAME" >}} \ + --secret-id {{< placeholder "AWS_SECRET_NAME" >}} \ --query SecretString \ --output text \ | jq @@ -162,10 +163,10 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use #### Create a Policy -2. [Create a new `.hcl` policy](https://openbao.org/docs/concepts/policies/) file in `/etc/openbao`, replacing {{< placeholder "POLICY_FILENAME" >}} (e.g. `db-secrets-policy.hcl`) with a policy filename of your choosing: +2. Create a new `.hcl` [policy file](https://openbao.org/docs/concepts/policies/) in `/etc/openbao`, replacing {{< placeholder "POLICY_FILE" >}} (e.g. `db-secrets-policy.hcl`) with a policy filename of your choosing: ```command - sudo nano /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + sudo nano /etc/openbao/{{< placeholder "POLICY_FILE" >}} ``` **For Example:** @@ -176,7 +177,7 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use 1. Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`) with your chosen mount path: - ```file {title="POLICY_FILENAME.hcl"} + ```file {title="POLICY_FILE.hcl"} path "{{< placeholder "SECRET_MOUNT_PATH" >}}/*" { capabilities = ["read"] } @@ -190,14 +191,14 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use } ``` - This policy grants read access to any secrets within the specified mount path (e.g. `database-credentials`). + This policy grants read access to any secrets within the specified mount path. When done, press CTRL+X, followed by Y then Enter to save the file and exit `nano`. -1. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `db-secrets-policy`) and {{< placeholder "POLICY_FILENAME" >}} (e.g. `db-secrets-policy.hcl`): +1. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `db-secrets-policy`) and {{< placeholder "POLICY_FILE" >}}: ```command - bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILE" >}} ``` **For Example**: @@ -212,7 +213,7 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use #### Create an AppRole -5. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`) and {{< placeholder "POLICY_NAME" >}} (e.g. `db-secrets-policy`): +5. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`) and {{< placeholder "POLICY_NAME" >}}: ```command bao write auth/approle/role/{{< placeholder "APPROLE_NAME" >}} token_policies={{< placeholder "POLICY_NAME" >}} @@ -228,7 +229,7 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use Success! Data written to: auth/approle/role/web-app-approle ``` -1. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): +1. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}} @@ -260,7 +261,7 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use token_type default ``` -1. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): +1. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/role-id @@ -280,7 +281,7 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use #### Generate a Secret ID -8. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `web-app-approle`): +8. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao write -f auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/secret-id @@ -315,8 +316,8 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use ```command bao write auth/approle/login \ - role_id="{{< placeholder "1d41b8be-03d2-6f61-702d-1731c957fd13" >}}" \ - secret_id="{{< placeholder "4eb6e604-681c-3fc3-bedd-a2dc774955bb" >}}" + role_id="1d41b8be-03d2-6f61-702d-1731c957fd13" \ + secret_id="4eb6e604-681c-3fc3-bedd-a2dc774955bb" ``` ```output @@ -332,13 +333,13 @@ Follow these steps to create an OpenBao AppRole that mimics IAM-based access use token_meta_role_name web-app-approle ``` - The AppRole token (e.g. `s.kpKsgWNtYLAktRYQT4BiMVMy`) can be used by a user, machine, or service, such a web application, to authenticate OpenBao API calls, giving the caller authorization to read the database credential secret. + The resulting AppRole token (e.g. `s.kpKsgWNtYLAktRYQT4BiMVMy`) can be used by a user, machine, or service, such a web application, to authenticate OpenBao API calls, giving the caller authorization to read the database credential secret. ### Storing Secrets Create the secret store defined in the policy created above. -1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`): +1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}}: ```command bao secrets enable --path={{< placeholder "SECRET_MOUNT_PATH" >}} kv @@ -354,7 +355,7 @@ Create the secret store defined in the policy created above. Success! Enabled the kv secrets engine at: database-credentials/ ``` -1. The example database secret stored at AWS Secrets Manager includes multiple fields stored as a JSON object. Store a structured secret such as this in the {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`) as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `psql`) like this: +1. The example database secret stored at AWS Secrets Manager includes multiple fields stored as a JSON object. Store a structured secret such as this in the {{< placeholder "SECRET_MOUNT_PATH" >}} as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `psql`): ```command bao kv put --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} \ @@ -384,7 +385,7 @@ Create the secret store defined in the policy created above. ### Retrieving Secrets -1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`) and {{< placeholder "SECRET_NAME" >}} (e.g. `psql`): +1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} and {{< placeholder "SECRET_NAME" >}}: ```command bao kv get --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} @@ -408,7 +409,7 @@ Create the secret store defined in the policy created above. username psqluser ``` -1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.36Yb3ijEOJbifprhdEiFtPhR`) saved earlier, {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `database-credentials`), and {{< placeholder "SECRET_NAME" >}} (e.g. `psql`): +1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} saved earlier (e.g. `s.36Yb3ijEOJbifprhdEiFtPhR`), your {{< placeholder "SECRET_MOUNT_PATH" >}}, and the {{< placeholder "SECRET_NAME" >}}: ```command curl --header "X-Vault-Token: {{< placeholder "APPROLE_TOKEN" >}}" \ diff --git a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md index 1111a82cd39..a8092328494 100644 --- a/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-azure-key-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -38,6 +38,26 @@ This guide walks through how to migrate secrets stored in Azure Key Vault to Ope This guide is written for a non-root user. Commands that require elevated privileges are prefixed with `sudo`. If you’re not familiar with the `sudo` command, see the [Users and Groups](/docs/guides/linux-users-and-groups/) guide. {{< /note >}} +Additionally, this guide contains a number of placeholders that are intended to be replaced by your own unique values. The table below lists these placeholders, what they represent, and the example values used in this guide: + +| Placeholder | Represents | Example Value | +|-------------------------------------------|-------------------------------------------------------|----------------------------------------| +| `{{< placeholder "AZURE_VAULT_NAME" >}}` | The name of the Azure Key Vault | `my-app-vault` | +| `{{< placeholder "AZURE_SECRET_NAME" >}}` | Name of a secret stored in Azure Key Vault | `LLM-service-key` | +| `{{< placeholder "POLICY_FILE" >}}` | Filename of the `.hcl` policy definition | `api-keys-secrets-policy.hcl` | +| `{{< placeholder "SECRET_MOUNT_PATH" >}}` | Mount path in OpenBao KV store for organizing secrets | `api-keys` | +| `{{< placeholder "POLICY_NAME" >}}` | Name of the OpenBao policy | `api-keys-secrets-policy` | +| `{{< placeholder "APPROLE_NAME" >}}` | Name of the OpenBao AppRole | `api-key-reader-approle` | +| `{{< placeholder "APPROLE_ID" >}}` | AppRole ID for authenticating in OpenBao | `e633701e-893e-460d-8012-ea2afedbcd87` | +| `{{< placeholder "APPROLE_SECRET_ID" >}}` | Secret ID associated with the AppRole | `725d9076-5a5c-4921-98f7-7535c767386a` | +| `{{< placeholder "APPROLE_TOKEN" >}}` | API token retrieved from OpenBao using the AppRole | `s.36Yb3ijEOJbifprhdEiFtPhR` | +| `{{< placeholder "SECRET_NAME" >}}` | Name of the secret to store in OpenBao | `llm-service` | +| `{{< placeholder "SECRET_VALUE" >}}` | Value of the secret to store in OpenBao | `0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&...` | + +{{< note >}} +All of the example values used in this guide are purely examples to mimic the format of actual secrets. These are *not* real credentials to any exisiting systems. +{{< /note >}} + ## Review Existing Secrets in Azure Key Vault Before migrating to OpenBao, evaluate how your organization currently uses Azure Key Vault. @@ -74,11 +94,19 @@ To view role assignments in the Azure portal, navigate to your key vault, select You can also use the Azure CLI (`az`) to manage the secrets in your key vault. -1. [List all the secrets in your vault](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-list) by specifying the {{< placeholder "VAULT_NAME" >}} (e.g. `my-app-vault`): +1. [List all the secrets in your vault](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-list) by specifying the {{< placeholder "AZURE_VAULT_NAME" >}} (e.g. `my-app-vault`): + + ```command + az keyvault secret list \ + --vault-name "{{< placeholder "AZURE_VAULT_NAME" >}}" \ + --query "\[\].name" + ``` + + **For Example**: ```command az keyvault secret list \ - --vault-name "{{< placeholder "VAULT_NAME" >}}" \ + --vault-name "my-app-vault" \ --query "\[\].name" ``` @@ -91,12 +119,21 @@ You can also use the Azure CLI (`az`) to manage the secrets in your key vault. ] ``` -1. Retrieve the [value of a single secret](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-show) by providing both the {{< placeholder "VAULT_NAME" >}} (e.g. `my-app-vault`) and {{< placeholder "SECRET_NAME" >}} (e.g. `LLM-service-key`). +1. Retrieve the [value of a single secret](https://learn.microsoft.com/en-us/cli/azure/keyvault/secret?view=azure-cli-latest#az-keyvault-secret-show) by providing both the {{< placeholder "AZURE_VAULT_NAME" >}} and {{< placeholder "AZURE_SECRET_NAME" >}} (e.g. `LLM-service-key`). ```command az keyvault secret show \ - --vault-name "{{< placeholder "VAULT_NAME" >}}" \ - --name "{{< placeholder "SECRET_NAME" >}}" \ + --vault-name "{{< placeholder "AZURE_VAULT_NAME" >}}" \ + --name "{{< placeholder "AZURE_SECRET_NAME" >}}" \ + --query "value" + ``` + + **For Example**: + + ```command + az keyvault secret show \ + --vault-name "my-app-vault" \ + --name "LLM-service-key" \ --query "value" ``` @@ -139,28 +176,48 @@ Follow these steps to create an OpenBao AppRole that mirrors the access control #### Create a Policy -2. Create a new `.hcl` policy file in `/etc/openbao`, replacing {{< placeholder "POLICY_FILENAME" >}} (e.g. `api-keys-secrets-policy.hcl`) with a policy filename of your choosing: +2. Create a new `.hcl` [policy file](https://openbao.org/docs/concepts/policies/) in `/etc/openbao`, replacing {{< placeholder "POLICY_FILE" >}} (e.g. `api-keys-secrets-policy.hcl`) with a policy filename of your choosing: ```command - sudo nano /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + sudo nano /etc/openbao/{{< placeholder "POLICY_FILE" >}} ``` - Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`) with your chosen mount path: + **For Example**: - ```file {title="api-keys-secrets-policy.hcl"} + ```command + sudo nano /etc/openbao/api-keys-secrets-policy.hcl + ``` + +1. Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`) with your chosen mount path: + + ```file {title="POLICY_FILE.hcl"} path "{{< placeholder "SECRET_MOUNT_PATH" >}}/*" { capabilities = ["read"] } ``` - This policy grants read access to any secrets within the specified mount path (e.g. `api-keys`). + **For Example**: + + ```file {title="api-keys-secrets-policy.hcl"} + path "api-keys/*" { + capabilities = ["read"] + } + ``` + + This policy grants read access to any secrets within the specified mount path. When done, press CTRL+X, followed by Y then Enter to save the file and exit `nano`. -3. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `api-keys-secrets-policy`) and {{< placeholder "POLICY_FILENAME" >}} (e.g. `api-keys-secrets-policy.hcl`): +1. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `api-keys-secrets-policy`) and {{< placeholder "POLICY_FILE" >}}: ```command - bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILE" >}} + ``` + + **For Example**: + + ```command + bao policy write api-keys-secrets-policy /etc/openbao/api-keys-secrets-policy.hcl ``` ```output @@ -169,22 +226,34 @@ Follow these steps to create an OpenBao AppRole that mirrors the access control #### Create an AppRole -4. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `api-key-reader-approle`) and {{< placeholder "POLICY_NAME" >}} (e.g. `api-keys-secrets-policy`): +5. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `api-key-reader-approle`) and {{< placeholder "POLICY_NAME" >}}: ```command bao write auth/approle/role/{{< placeholder "APPROLE_NAME" >}} token_policies={{< placeholder "POLICY_NAME" >}} ``` + **For Example**: + + ```command + bao write auth/approle/role/api-key-reader-approle token_policies=api-keys-secrets-policy + ``` + ```output Success! Data written to: auth/approle/role/api-key-reader-approle ``` -5. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `api-key-reader-approle`): +1. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}} ``` + **For Example**: + + ```command + bao read auth/approle/role/api-key-reader-approle + ``` + ```output Key Value --- ----- @@ -205,12 +274,18 @@ Follow these steps to create an OpenBao AppRole that mirrors the access control token_type default ``` -6. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `api-key-reader-approle`): +1. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/role-id ``` + **For Example**: + + ```command + bao read auth/approle/role/api-key-reader-approle/role-id + ``` + ```output Key Value --- ----- @@ -219,12 +294,18 @@ Follow these steps to create an OpenBao AppRole that mirrors the access control #### Generate a Secret ID -7. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `api-key-reader-approle`): +8. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao write -f auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/secret-id ``` + **For Example**: + + ```command + bao write -f auth/approle/role/api-key-reader-approle/secret-id + ``` + ```output Key Value --- ----- @@ -236,7 +317,7 @@ Follow these steps to create an OpenBao AppRole that mirrors the access control #### Generate an API Token -8. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `e633701e-893e-460d-8012-ea2afedbcd87`) and the {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `725d9076-5a5c-4921-98f7-7535c767386a`) from the previous commands: +9. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `e633701e-893e-460d-8012-ea2afedbcd87`) and the {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `725d9076-5a5c-4921-98f7-7535c767386a`) from the previous commands: ```command bao write auth/approle/login \ @@ -244,6 +325,14 @@ Follow these steps to create an OpenBao AppRole that mirrors the access control secret_id="{{< placeholder "APPROLE_SECRET_ID" >}}" ``` + **For Example**: + + ```command + bao write auth/approle/login \ + role_id=" e633701e-893e-460d-8012-ea2afedbcd87" \ + secret_id="725d9076-5a5c-4921-98f7-7535c767386a" + ``` + ```output Key Value --- ----- @@ -257,41 +346,60 @@ Follow these steps to create an OpenBao AppRole that mirrors the access control token_meta_role_name api-key-reader-approle ``` - The AppRole token (e.g. `s.TuQBY39kkpEDOqKcKYbWvpmZ`) can be used by a user, machine, or service, such a web application, to authenticate OpenBao API calls, giving the caller authorization to read the LLM service API key secret. + The resulting AppRole token (e.g. `s.TuQBY39kkpEDOqKcKYbWvpmZ`) can be used by a user, machine, or service, such a web application, to authenticate OpenBao API calls, giving the caller authorization to read the LLM service API key secret. ### Storing Secrets Create the secret store defined in the policy created above. -1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`): +1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}}: ```command bao secrets enable --path={{< placeholder "SECRET_MOUNT_PATH" >}} kv ``` + **For Example**: + + ```command + bao secrets enable --path=api-keys kv + ``` + ```output Success! Enabled the kv secrets engine at: api-keys/ ``` -1. Store your {{< placeholder "SECRET_VALUE" >}} (e.g. `0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP`) in the {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`) as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `llm-service`): +1. Store your {{< placeholder "SECRET_VALUE" >}} (e.g. `0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP`) in the {{< placeholder "SECRET_MOUNT_PATH" >}} as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `llm-service`): ```command bao kv put --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} \ "key"="{{< placeholder "SECRET_VALUE" >}}" ``` + **For Example**: + + ```command + bao kv put --mount=api-keys llm-service \ + "key"="0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP" + ``` + ```output Success! Data written to: api-keys/llm-service ``` ### Retrieving Secrets -1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`) and {{< placeholder "SECRET_NAME" >}} (e.g. `llm-service`): +1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} and {{< placeholder "SECRET_NAME" >}}: ```command bao kv get --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} ``` + **For Example**: + + ```command + bao kv get --mount=api-keys llm-service + ``` + ```output ====== Data ====== Key Value @@ -299,7 +407,7 @@ Create the secret store defined in the policy created above. key 0z7NUSJ6gHKoWLkO5q2%Zq1E1do%m&RSa47jljP4nMVs7qG#n87Lai46niZUCrLP ``` -1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.36Yb3ijEOJbifprhdEiFtPhR`) saved earlier, {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `api-keys`), and {{< placeholder "SECRET_NAME" >}} (e.g. `llm-service`): +1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.36Yb3ijEOJbifprhdEiFtPhR`) saved earlier, your {{< placeholder "SECRET_MOUNT_PATH" >}}, and the {{< placeholder "SECRET_NAME" >}}: ```command curl --header "X-Vault-Token: {{< placeholder "APPROLE_TOKEN" >}}" \ @@ -308,6 +416,15 @@ Create the secret store defined in the policy created above. | jq ``` + **For Example**: + + ```command + curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ + --request GET \ + $BAO_ADDR/v1/api-keys/llm-service \ + | jq + ``` + ```output { "request_id": "4ea9a66e-c63a-433c-b2e2-015c39c45086", diff --git a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md index 3e509c7cac9..b0b76f578cb 100644 --- a/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-gcp-secret-manager-to-openbao-on-linode-kubernetes-engine/index.md @@ -38,6 +38,26 @@ This guide walks through how to migrate secrets from GCP Secret Manager to OpenB This guide is written for a non-root user. Commands that require elevated privileges are prefixed with `sudo`. If you’re not familiar with the `sudo` command, see the [Users and Groups](/docs/guides/linux-users-and-groups/) guide. {{< /note >}} +Additionally, this guide contains a number of placeholders that are intended to be replaced by your own unique values. The table below lists these placeholders, what they represent, and the example values used in this guide: + +| Placeholder | Represents | Example Value | +|-----------------------------------------|------------------------------------------------------------|----------------------------------------| +| {{< placeholder "GCP_PROJECT_ID" >}} | Google Cloud project ID. | `ecommerce-application-454116` | +| {{< placeholder "GCP_SECRET_NAME" >}} | Name of a secret stored in GCP Secret Manager. | `jwt-signing-secret` | +| {{< placeholder "POLICY_FILE" >}} | Name of the local file where the OpenBao policy is stored. | `jwt-secrets-policy.hcl` | +| {{< placeholder "SECRET_MOUNT_PATH" >}} | Mount path for KV engine in OpenBao. | `jwt` | +| {{< placeholder "POLICY_NAME" >}} | OpenBao policy name. | `jwt-secrets-policy` | +| {{< placeholder "APPROLE_NAME" >}} | Name of the AppRole in OpenBao. | `app-authenticator-approle` | +| {{< placeholder "APPROLE_ID" >}} | ID of the AppRole generated by OpenBao. | `019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863` | +| {{< placeholder "APPROLE_SECRET_ID" >}} | Secret ID created for the AppRole. | `cef786fb-1d1c-4c52-9466-aea47b3c8d3a` | +| {{< placeholder "SECRET_VALUE" >}} | The actual secret value to be stored in OpenBao. | `EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW` | +| {{< placeholder "SECRET_NAME" >}} | The name of the secret in OpenBao. | `signer` | +| {{< placeholder "APPROLE_TOKEN" >}} | Token generated from AppRole login. | `s.dy572yUtTNvHTZgIoxdNVO41` | + +{{< note >}} +All of the example values used in this guide are purely examples to mimic the format of actual secrets. These are *not* real credentials to any exisiting systems. +{{< /note >}} + ## Review Existing Secrets in GCP Secret Manager Before migrating to OpenBao, evaluate how your organization currently uses GCP Secret Manager. @@ -70,10 +90,16 @@ You can also use the `gcloud` CLI to authenticate and inspect the secrets stored gcloud auth login ``` -1. Set the active project, replacing {{< placeholder "PROJECT_ID" >}} (e.g. `ecommerce-application-454116`) with your actual project ID: +1. Set the active project, replacing {{< placeholder "GCP_PROJECT_ID" >}} (e.g. `ecommerce-application-454116`) with your actual project ID: + + ```command + gcloud config set project {{< placeholder "GCP_PROJECT_ID" >}} + ``` + + **For Example**: ```command - gcloud config set project {{< placeholder "PROJECT_ID" >}} + gcloud config set project ecommerce-application-454116 ``` 1. [List](https://cloud.google.com/sdk/gcloud/reference/secrets/list) all secrets: @@ -91,10 +117,16 @@ You can also use the `gcloud` CLI to authenticate and inspect the secrets stored slack_webhook_url 2024-11-19T21:19:15 automatic - ``` -1. Retrieve the [latest version](https://cloud.google.com/sdk/gcloud/reference/secrets/versions/access) of a secret, replacing {{< placeholder "SECRET_NAME" >}} (e.g. `jwt-signing-secret`) with an actual secret name: +1. Retrieve the [latest version](https://cloud.google.com/sdk/gcloud/reference/secrets/versions/access) of a secret, replacing {{< placeholder "GCP_SECRET_NAME" >}} (e.g. `jwt-signing-secret`) with an actual secret name: ```command - gcloud secrets versions access latest --secret={{< placeholder "SECRET_NAME" >}} + gcloud secrets versions access latest --secret={{< placeholder "GCP_SECRET_NAME" >}} + ``` + + **For Example**: + + ```command + gcloud secrets versions access latest --secret=jwt-signing-secret ``` ```output @@ -138,28 +170,48 @@ Follow these steps to create an OpenBao AppRole that mimics the role-based acces #### Create a Policy -2. Create a new `.hcl` policy file in `/etc/openbao`, replacing {{< placeholder "POLICY_FILENAME" >}} (e.g. `jwt-secrets-policy.hcl`) with a policy filename of your choosing: +2. Create a new `.hcl` [policy file](https://openbao.org/docs/concepts/policies/) in `/etc/openbao`, replacing {{< placeholder "POLICY_FILE" >}} (e.g. `jwt-secrets-policy.hcl`) with a policy filename of your choosing: ```command - sudo nano /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + sudo nano /etc/openbao/{{< placeholder "POLICY_FILE" >}} ``` - Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`) with your chosen mount path: + **For Example**: - ```file {title="jwt-secrets-policy.hcl"} + ```command + sudo nano /etc/openbao/jwt-secrets-policy.hcl + ``` + +1. Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`) with your chosen mount path: + + ```file {title="POLICY_FILE.hcl"} path "{{< placeholder "SECRET_MOUNT_PATH" >}}/*" { capabilities = ["read"] } ``` - This policy grants read access to any secrets within the specified mount path (e.g. `jwt`). + **For Example**: + + ```file {title="jwt-secrets-policy.hcl"} + path "jwt/*" { + capabilities = ["read"] + } + ``` + + This policy grants read access to any secrets within the specified mount path. When done, press CTRL+X, followed by Y then Enter to save the file and exit `nano`. -3. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `jwt-secrets-policy`) and {{< placeholder "POLICY_FILENAME" >}} (e.g. `jwt-secrets-policy.hcl`): +1. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `jwt-secrets-policy`) and {{< placeholder "POLICY_FILE" >}}: + + ```command + bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILE" >}} + ``` + + **For Example**: ```command - bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + bao policy write jwt-secrets-policy /etc/openbao/jwt-secrets-policy.hcl ``` ```output @@ -168,7 +220,7 @@ Follow these steps to create an OpenBao AppRole that mimics the role-based acces #### Create an AppRole -4. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `app-authenticator-approle`) and {{< placeholder "POLICY_NAME" >}} (e.g. `jwt-secrets-policy`): +5. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `app-authenticator-approle`) and {{< placeholder "POLICY_NAME" >}}: ```command bao write \ @@ -176,16 +228,30 @@ Follow these steps to create an OpenBao AppRole that mimics the role-based acces token_policies={{< placeholder "POLICY_NAME" >}} ``` + **For Example**: + + ```command + bao write \ + auth/approle/role/app-authenticator-approle \ + token_policies=jwt-secrets-policy + ``` + ```output Success! Data written to: auth/approle/role/app-authenticator-approle ``` -5. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `app-authenticator-approle`): +1. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}} ``` + **For Example**: + + ```command + bao read auth/approle/role/app-authenticator-approle + ``` + ```output Key Value --- ----- @@ -206,7 +272,7 @@ Follow these steps to create an OpenBao AppRole that mimics the role-based acces token_type default ``` -6. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `app-authenticator-approle`): +1. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/role-id @@ -220,12 +286,18 @@ Follow these steps to create an OpenBao AppRole that mimics the role-based acces #### Generate a Secret ID -7. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `app-authenticator-approle`):: +8. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao write -f auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/secret-id ``` + **For Example**: + + ```command + bao write -f auth/approle/role/app-authenticator-approle/secret-id + ``` + ```output Key Value --- ----- @@ -237,7 +309,7 @@ Follow these steps to create an OpenBao AppRole that mimics the role-based acces #### Generate an API Token -8. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863`) and {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `cef786fb-1d1c-4c52-9466-aea47b3c8d3a`) from the previous commands: +9. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863`) and {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `cef786fb-1d1c-4c52-9466-aea47b3c8d3a`) from the previous commands: ```command bao write auth/approle/login \ @@ -245,6 +317,14 @@ Follow these steps to create an OpenBao AppRole that mimics the role-based acces secret_id="{{< placeholder "APPROLE_SECRET_ID" >}}" ``` + **For Example**: + + ```command + bao write auth/approle/login \ + role_id="019e2cc5-b8ce-4aa4-91b9-c2c9e9e59863" \ + secret_id="cef786fb-1d1c-4c52-9466-aea47b3c8d3a" + ``` + ```output Key Value --- ----- @@ -258,41 +338,60 @@ Follow these steps to create an OpenBao AppRole that mimics the role-based acces token_meta_role_name app-authenticator-approle ``` - The AppRole token (e.g. `s.dy572yUtTNvHTZgIoxdNVO41`) can be used by a user, machine, or service, such as the authentication API for a web application, to authenticate OpenBao API calls, giving the caller authorization to read the JWT signing secret. + The resulting AppRole token (e.g. `s.dy572yUtTNvHTZgIoxdNVO41`) can be used by a user, machine, or service, such as the authentication API for a web application, to authenticate OpenBao API calls, giving the caller authorization to read the JWT signing secret. ### Storing Secrets Create the secret store defined in the policy created above. -1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`): +1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}}: ```command bao secrets enable --path={{< placeholder "SECRET_MOUNT_PATH" >}} kv ``` + **For Example**: + + ```command + bao secrets enable --path=jwt kv + ``` + ```output Success! Enabled the kv secrets engine at: jwt/ ``` -1. Store your {{< placeholder "SECRET_VALUE" >}} (e.g. `EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW`) in the {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`) as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `signer`): +1. Store your {{< placeholder "SECRET_VALUE" >}} (e.g. `EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW`) in the {{< placeholder "SECRET_MOUNT_PATH" >}} as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `signer`): ```command bao kv put --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} \ "secret"="{{< placeholder "SECRET_VALUE" >}}" ``` + **For Example**: + + ```command + bao kv put --mount=jwt signer \ + "secret"="EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW" + ``` + ```output Success! Data written to: jwt/signer ``` ### Retrieving Secrets -1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`) and {{< placeholder "SECRET_NAME" >}} (e.g. `signer`): +1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} and {{< placeholder "SECRET_NAME" >}}: ```command bao kv get --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} ``` + **For Example**: + + ```command + bao kv get --mount=jwt signer + ``` + ```output ====== Data ====== Key Value @@ -300,7 +399,7 @@ Create the secret store defined in the policy created above. secret EU&&7O^#c2GAMIdRyJlZkPEdoWKgy%CW ``` -1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.dy572yUtTNvHTZgIoxdNVO41`) saved earlier, {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `jwt`), and {{< placeholder "SECRET_NAME" >}} (e.g. `signer`): +1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.dy572yUtTNvHTZgIoxdNVO41`) saved earlier, your {{< placeholder "SECRET_MOUNT_PATH" >}}, and the {{< placeholder "SECRET_NAME" >}}: ```command curl --header "X-Vault-Token: {{< placeholder "APPROLE_TOKEN" >}}" \ @@ -309,6 +408,15 @@ Create the secret store defined in the policy created above. | jq ``` + **For Example**: + + ```command + curl --header "X-Vault-Token: s.dy572yUtTNvHTZgIoxdNVO41" \ + --request GET \ + $BAO_ADDR/v1/jwt/signer \ + | jq + ``` + ```output { "request_id": "0e70b929-06b6-4685-b787-dc1ce6c31b9b", diff --git a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md index ea183aefdd4..3aefd2119b9 100644 --- a/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md +++ b/docs/guides/kubernetes/migrate-from-oracle-vault-to-openbao-on-linode-kubernetes-engine/index.md @@ -38,6 +38,27 @@ This guide walks through how to migrate secrets from Oracle Vault to OpenBao run This guide is written for a non-root user. Commands that require elevated privileges are prefixed with `sudo`. If you’re not familiar with the `sudo` command, see the [Users and Groups](/docs/guides/linux-users-and-groups/) guide. {{< /note >}} +Additionally, this guide contains a number of placeholders that are intended to be replaced by your own unique values. The table below lists these placeholders, what they represent, and the example values used in this guide: + +| Placeholder | Represents | Example Value | +|------------------------------------------|------------------------------------------------------|-------------------------------------------------------------------| +| {{< placeholder "OCI_COMPARTMENT_ID" >}} | The OCID of the compartment containing your vault. | ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn... | +| {{< placeholder "OCI_SECRET_ID" >}} | The OCID of the secret stored in Oracle Vault. | ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit... | +| {{< placeholder "OCI_ENCODED_SECRET" >}} | The base64-encoded value of the Oracle secret. | eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUi... | +| {{< placeholder "POLICY_FILE" >}} | The name of the policy file. | cloud-credentials-policy.hcl | +| {{< placeholder "SECRET_MOUNT_PATH" >}} | The mount path (namespace) where secrets are stored. | cloud-credentials | +| {{< placeholder "POLICY_NAME" >}} | The internal name for the policy in OpenBao. | cloud-credentials-policy | +| {{< placeholder "APPROLE_NAME" >}} | The name of the AppRole. | cloud-credential-reader-approle | +| {{< placeholder "APPROLE_ID" >}} | The role ID generated for the AppRole. | c8663988-136f-42de-af40-1dfb94f0c1f6 | +| {{< placeholder "APPROLE_SECRET_ID" >}} | The secret ID generated for the AppRole. | 9b9c27a3-dc27-4eea-921f-773164ec17c7 | +| {{< placeholder "SECRET_VALUE" >}} | The actual secret contents to store in OpenBao. | { "access_key_id": "...", "secret_access_key": "..." } | +| {{< placeholder "SECRET_NAME" >}} | The name of the secret stored under the mount path. | provider-a | +| {{< placeholder "APPROLE_TOKEN" >}} | The API token generated from the AppRole login. | s.36Yb3ijEOJbifprhdEiFtPhR | + +{{< note >}} +All of the example values used in this guide are purely examples to mimic the format of actual secrets. These are *not* real credentials to any exisiting systems. +{{< /note >}} + ## Review Existing Secrets in Oracle Vault Before migrating to OpenBao, evaluate how your organization currently uses Oracle Vault. @@ -86,11 +107,19 @@ You can also use the Oracle Cloud CLI (`oci`) to manage the secrets in your Orac ] ``` -1. [List the secrets in your vault](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/vault/secret/list.html) by specifying the {{< placeholder "COMPARTMENT_ID" >}} (e.g. `ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq`): +1. [List the secrets in your vault](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/vault/secret/list.html) by specifying the {{< placeholder "OCI_COMPARTMENT_ID" >}} (e.g. `ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq`): + + ```command + oci vault secret list \ + --compartment-id {{< placeholder "OCI_COMPARTMENT_ID" >}} \ + --query 'data[].["secret-name","description","id"]' + ``` + + **For Example**: ```command oci vault secret list \ - --compartment-id {{< placeholder "COMPARTMENT_ID" >}} \ + --compartment-id ocid1.compartment.oc1..aaaaaaaawrrlh7hw6b4tnsbxevyoywscike5ygn4ut5n734mjsclijgpjjgq \ --query 'data[].["secret-name","description","id"]' ``` @@ -114,11 +143,20 @@ You can also use the Oracle Cloud CLI (`oci`) to manage the secrets in your Orac ] ``` -1. Retrieve the [value of a secret](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/secrets/secret-bundle/get.html) by specifying its {{< placeholder "SECRET_ID" >}} (e.g. `ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea`): +1. Retrieve the [value of a secret](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.53.0/oci_cli_docs/cmdref/secrets/secret-bundle/get.html) by specifying its {{< placeholder "OCI_SECRET_ID" >}} (e.g. `ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea`): ```command oci secrets secret-bundle get \ - --secret-id {{< placeholder "SECRET_ID" >}} \ + --secret-id {{< placeholder "OCI_SECRET_ID" >}} \ + --stage CURRENT \ + --query 'data."secret-bundle-content"' + ``` + + **For Example**: + + ```command + oci secrets secret-bundle get \ + --secret-id ocid1.vaultsecret.oc1.phx.amaaaaaaogvqnkqaepiqln7ztj43ugit75w3wl7kyzldk3rbqkfd2zmtp3ea \ --stage CURRENT \ --query 'data."secret-bundle-content"' ``` @@ -134,7 +172,14 @@ You can also use the Oracle Cloud CLI (`oci`) to manage the secrets in your Orac 1. If the secret bundle `content-type` is `BASE64` (e.g. `eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ==`), you must decode it to reveal the original value: ```command - echo {{< placeholder "BASE64_ENCODED_SECRET" >}} \ + echo {{< placeholder "OCI_ENCODED_SECRET" >}} \ + | base64 --decode + ``` + + **For Example**: + + ```command + echo eyAiYWNjZXNzX2tleV9pZCIgOiAiQUtJQTUxM0oyRERSQVhDRktYRjUiLCAic2VjcmV0X2FjY2Vzc19rZXkiIDoiWGRxRDBCUGE4YUxGYU4rRUk4U0FZbTlVNFpZZVhRZE1HQUlqS0QveCIgfQ== \ | base64 --decode ``` @@ -147,16 +192,12 @@ You can also use the Oracle Cloud CLI (`oci`) to manage the secrets in your Orac ```command oci secrets secret-bundle get \ - --secret-id {{< placeholder "SECRET_ID" >}} \ + --secret-id {{< placeholder "OCI_SECRET_ID" >}} \ --stage CURRENT \ --query 'data."secret-bundle-content".content' \ --raw-output \ | base64 --decode ``` - - ```output - { "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" } - ``` {{< /note >}} ## Deploy OpenBao on Akamai Cloud @@ -194,28 +235,47 @@ Follow these steps to create an OpenBao AppRole that mirrors access controls use #### Create a Policy -2. Create a new `.hcl` policy file in `/etc/openbao`, replacing {{< placeholder "POLICY_FILENAME" >}} (e.g. `cloud-credentials-policy.hcl`) with a policy filename of your choosing: +2. Create a new `.hcl` [policy file](https://openbao.org/docs/concepts/policies/) in `/etc/openbao`, replacing {{< placeholder "POLICY_FILE" >}} (e.g. `cloud-credentials-policy.hcl`) with a policy filename of your choosing: ```command - sudo nano /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + sudo nano /etc/openbao/{{< placeholder "POLICY_FILE" >}} ``` - Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`) with your chosen mount path: + **For Example**: - ```file {title="cloud-credentials-policy.hcl"} + ```command + sudo nano /etc/openbao/cloud-credentials-policy.hcl + ``` +1. Give the file the following contents, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`) with your chosen mount path: + + ```file {title="POLICY_FILE.hcl"} path "{{< placeholder "SECRET_MOUNT_PATH" >}}/*" { capabilities = ["read"] } ``` - This policy grants read access to any secrets within the specified mount path (e.g. `cloud-credentials`). + **For Example**: + + ```file {title="cloud-credentials-policy.hcl"} + path "cloud-credentials/*" { + capabilities = ["read"] + } + ``` + + This policy grants read access to any secrets within the specified mount path. When done, press CTRL+X, followed by Y then Enter to save the file and exit `nano`. -3. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `cloud-credentials-policy`) and {{< placeholder "POLICY_FILENAME" >}} (e.g. `cloud-credentials-policy.hcl`): +1. Add the policy to OpenBao, replacing {{< placeholder "POLICY_NAME" >}} (e.g. `cloud-credentials-policy`) and {{< placeholder "POLICY_FILE" >}}: + + ```command + bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILE" >}} + ``` + + **For Example**: ```command - bao policy write {{< placeholder "POLICY_NAME" >}} /etc/openbao/{{< placeholder "POLICY_FILENAME" >}} + bao policy write cloud-credentials-policy /etc/openbao/cloud-credentials-policy.hcl ``` ```output @@ -224,7 +284,7 @@ Follow these steps to create an OpenBao AppRole that mirrors access controls use #### Create an AppRole -4. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `cloud-credential-reader-approle`) and {{< placeholder "POLICY_NAME" >}} (e.g. `cloud-credentials-policy`): +5. Create an AppRole for the application that needs access to the secret, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `cloud-credential-reader-approle`) and {{< placeholder "POLICY_NAME" >}}: ```command bao write \ @@ -232,16 +292,30 @@ Follow these steps to create an OpenBao AppRole that mirrors access controls use token_policies={{< placeholder "POLICY_NAME" >}} ``` + **For Example**: + + ```command + bao write \ + auth/approle/role/cloud-credential-reader-approle \ + token_policies=cloud-credentials-policy + ``` + ```output Success! Data written to: auth/approle/role/cloud-credential-reader-approle ``` -5. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `cloud-credential-reader-approle`): +1. Verify that the AppRole was written successfully, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}} ``` + **For Example**: + + ```command + bao read auth/approle/role/cloud-credential-reader-approle + ``` + ```output Key Value --- ----- @@ -262,12 +336,18 @@ Follow these steps to create an OpenBao AppRole that mirrors access controls use token_type default ``` -6. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `cloud-credential-reader-approle`): +1. Fetch the AppRole ID, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao read auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/role-id ``` + **For Example**: + + ```command + bao read auth/approle/role/cloud-credential-reader-approle/role-id + ``` + ```output Key Value --- ----- @@ -276,12 +356,18 @@ Follow these steps to create an OpenBao AppRole that mirrors access controls use #### Generate a Secret ID -7. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}} (e.g. `cloud-credential-reader-approle`): +8. Generate a secret ID for the role, replacing {{< placeholder "APPROLE_NAME" >}}: ```command bao write -f auth/approle/role/{{< placeholder "APPROLE_NAME" >}}/secret-id ``` + **For Example**: + + ```command + bao write -f auth/approle/role/cloud-credential-reader-approle/secret-id + ``` + ```output Key Value --- ----- @@ -293,7 +379,7 @@ Follow these steps to create an OpenBao AppRole that mirrors access controls use #### Generate an API Token -8. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `c8663988-136f-42de-af40-1dfb94f0c1f6`) and {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `9b9c27a3-dc27-4eea-921f-773164ec17c7`) from the previous commands: +9. Generate an API token for the AppRole, supplying the {{< placeholder "APPROLE_ID" >}} (e.g. `c8663988-136f-42de-af40-1dfb94f0c1f6`) and {{< placeholder "APPROLE_SECRET_ID" >}} (e.g. `9b9c27a3-dc27-4eea-921f-773164ec17c7`) from the previous commands: ```command bao write auth/approle/login \ @@ -301,6 +387,14 @@ Follow these steps to create an OpenBao AppRole that mirrors access controls use secret_id="{{< placeholder "APPROLE_SECRET_ID" >}}" ``` + **For Example**: + + ```command + bao write auth/approle/login \ + role_id="c8663988-136f-42de-af40-1dfb94f0c1f6" \ + secret_id="9b9c27a3-dc27-4eea-921f-773164ec17c7" + ``` + ```output Key Value --- ----- @@ -314,41 +408,60 @@ Follow these steps to create an OpenBao AppRole that mirrors access controls use token_meta_role_name cloud-credential-reader-approle ``` - The AppRole token (`s.Q9n7KPnLKSDoYnVdrHnphEml` in the previous example) can be used by a user, machine, or service, such as an infrastructure management application, to authenticate OpenBao API calls, giving the caller authorization to read the cloud provider credentials secrets. + The resulting AppRole token (e.g. `s.Q9n7KPnLKSDoYnVdrHnphEml`) can be used by a user, machine, or service, such as an infrastructure management application, to authenticate OpenBao API calls, giving the caller authorization to read the cloud provider credentials secrets. ### Storing Secrets Create the secret store defined in the policy created above. -1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`): +1. Enable the KV secrets engine, replacing {{< placeholder "SECRET_MOUNT_PATH" >}}: ```command bao secrets enable --path={{< placeholder "SECRET_MOUNT_PATH" >}} kv ``` + **For Example**: + + ```command + bao secrets enable --path=cloud-credentials kv + ``` + ```output Success! Enabled the kv secrets engine at: cloud-credentials/ ``` -1. Store your {{< placeholder "SECRET_VALUE" >}} (e.g. `{ "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" }`) in the {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`) as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `provider-a`): +1. Store your {{< placeholder "SECRET_VALUE" >}} (e.g. `{ "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" }`) in the {{< placeholder "SECRET_MOUNT_PATH" >}} as a secret named {{< placeholder "SECRET_NAME" >}} (e.g. `provider-a`): ```command bao kv put --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} \ "secret"="{{< placeholder "SECRET_VALUE" >}}" ``` + **For Example**: + + ```command + bao kv put --mount=cloud-credentials provider-a \ + "secret"="{ "access_key_id": "AKIA513J2DDRAXCFKXF5", "secret_access_key": "XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x" }" + ``` + ```output Success! Data written to: cloud-credentials/provider-a ``` ### Retrieving Secrets -1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`) and {{< placeholder "SECRET_NAME" >}} (e.g. `provider-a`): +1. While authenticated with the root token, retrieve the secret using the OpenBao CLI, replacing {{< placeholder "SECRET_MOUNT_PATH" >}} and {{< placeholder "SECRET_NAME" >}}: ```command bao kv get --mount={{< placeholder "SECRET_MOUNT_PATH" >}} {{< placeholder "SECRET_NAME" >}} ``` + **For Example**: + + ```command + bao kv get --mount=cloud-credentials provider-a + ``` + ```output ====== Data ====== Key Value @@ -357,7 +470,7 @@ Create the secret store defined in the policy created above. secret_access_key XdqD0BPa8aLFaN+EI8SAYm9U4ZYeXQdMGAIjKD/x ``` -1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.36Yb3ijEOJbifprhdEiFtPhR`) saved earlier, {{< placeholder "SECRET_MOUNT_PATH" >}} (e.g. `cloud-credentials`), and {{< placeholder "SECRET_NAME" >}} (e.g. `provider-a`): +1. Test access using the {{< placeholder "APPROLE_TOKEN" >}} (e.g. `s.36Yb3ijEOJbifprhdEiFtPhR`) saved earlier, your {{< placeholder "SECRET_MOUNT_PATH" >}}, and the {{< placeholder "SECRET_NAME" >}}: ```command curl --header "X-Vault-Token: {{< placeholder "APPROLE_TOKEN" >}}" \ @@ -366,6 +479,15 @@ Create the secret store defined in the policy created above. | jq ``` + **For Example**: + + ```command + curl --header "X-Vault-Token: s.36Yb3ijEOJbifprhdEiFtPhR" \ + --request GET \ + $BAO_ADDR/v1/cloud-credentials/provider-a \ + | jq + ``` + ```output { "request_id": "92c5026e-bb14-4e2a-8d70-e94fb005183f",