From ada0fd9c5bcf3f19318435ddfeab264fa29eae16 Mon Sep 17 00:00:00 2001
From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com>
Date: Tue, 23 Jan 2024 08:47:01 +0400
Subject: [PATCH 1/4] Add new item for fallbacks
---
docs/sdks/overview.mdx | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/docs/sdks/overview.mdx b/docs/sdks/overview.mdx
index 28631a77d..d032311f2 100644
--- a/docs/sdks/overview.mdx
+++ b/docs/sdks/overview.mdx
@@ -32,6 +32,10 @@ From local development to production, Infisical SDKs provide the easiest way for
Note: The exact parameter name may differ depending on the language.
+
+ The SDK caches every secret and falls back to the cached value if a request fails. If no cached
+ value ever-existed, the SDK falls back to whatever value is on the process environment.
+
Yes you can! The client SDK provides a method to attach the secrets to your process environment. When using the `listSecrets()` method, you
can pass a `attachToProcessEnv` parameter, which tells the SDK to attach all the found secrets to your process environment.
From 8386f4dcbdf75a86b226e4d246f1489b1188af8b Mon Sep 17 00:00:00 2001
From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com>
Date: Tue, 23 Jan 2024 08:47:11 +0400
Subject: [PATCH 2/4] Update python guide to reflect new SDK
---
docs/documentation/guides/python.mdx | 46 +++++++++++++---------------
1 file changed, 21 insertions(+), 25 deletions(-)
diff --git a/docs/documentation/guides/python.mdx b/docs/documentation/guides/python.mdx
index 50ee44a86..696f0a7ee 100644
--- a/docs/documentation/guides/python.mdx
+++ b/docs/documentation/guides/python.mdx
@@ -5,7 +5,7 @@ title: "Python"
This guide demonstrates how to use Infisical to manage secrets for your Python stack from local development to production. It uses:
- Infisical (you can use [Infisical Cloud](https://app.infisical.com) or a [self-hosted instance of Infisical](https://infisical.com/docs/self-hosting/overview)) to store your secrets.
-- The [infisical-python](https://github.com/Infisical/infisical-python) client SDK to fetch secrets back to your Python application on demand.
+- The [infisical-python](https://github.com/Infisical/sdk/tree/main/crates/infisical-py) Python client SDK to fetch secrets back to your Python application on demand.
## Project Setup
@@ -17,13 +17,11 @@ To begin, we need to set up a project in Infisical and add secrets to an environ
2. Add a secret to the development environment of this project so we can pull it back for local development. In the **Secrets Overview** page, press **Explore Development** and add a secret with the key `NAME` and value `YOUR_NAME`.
-### Create an Infisical Token
+### Create a Machine Identity
-Now that we've created a project and added a secret to its development environment, we need to provision an Infisical Token that our Node application can use to access the secret.
+Now that we've created a project and added a secret to its development environment, we need to configure an Infisical Machine Identity that our Python application can use to access the secret.
-1. Head to the **Project Settings > Service Tokens** and press **Add New Token**.
-2. Call the token anything like **My App Token** and select **Development** under **Environment**.
-3. Copy the token and keep it handy.
+- [How to setup machine identities](/documentation/platform/identities/overview)
## Create a Python app
@@ -38,27 +36,36 @@ python3 -m venv env
source env/bin/activate
```
-Install Flask and [infisical-python](https://github.com/Infisical/infisical-python), the client Python SDK for Infisical.
+Install Flask and [infisical-python](https://github.com/Infisical/sdk/tree/main/crates/infisical-py), the client Python SDK for Infisical.
```console
-pip install Flask infisical
+pip install Flask infisical-python
```
Finally, create an `app.py` file containing the application code.
-```python
+```py
from flask import Flask
-from infisical import InfisicalClient
+from infisical_client import ClientSettings, InfisicalClient, GetSecretOptions
app = Flask(__name__)
-client = InfisicalClient(token="your_infisical_token")
+client = InfisicalClient(ClientSettings(
+ client_id="MACHINE_IDENTITY_CLIENT_ID",
+ client_secret="MACHINE_IDENTITY_CLIENT_SECRET",
+))
@app.route("/")
def hello_world():
# access value
- name = client.get_secret("NAME")
- return f"Hello, {name.secret_value}!"
+
+ name = client.getSecret(options=GetSecretOptions(
+ environment="dev",
+ project_id="PROJECT_ID",
+ secret_name="NAME"
+ ))
+
+ return f"Hello! My name is: {name.secret_value}"
```
Here, we initialized a `client` instance of the Infisical Python SDK with the Infisical Token
@@ -78,13 +85,6 @@ At this stage, you know how to fetch secrets from Infisical back to your Python
## FAQ
-
- No. Infisical uses end-to-end encryption which ensures that secrets are always encrypted in transit
- and decrypted on the client side. In fact, not even the server can decrypt your secrets (unless
- that permission is explicitly granted from within the platform).
-
- Check out the [security guide](/security/overview).
-
The client SDK caches every secret and implements a 5-minute waiting period before
re-requesting it. The waiting period can be controlled by setting the `cacheTTL` parameter at
@@ -94,10 +94,6 @@ At this stage, you know how to fetch secrets from Infisical back to your Python
The SDK caches every secret and falls back to the cached value if a request fails. If no cached
value ever-existed, the SDK falls back to whatever value is on `process.env`.
-
- Yes. If no `token` parameter is passed in at the time of initializing the client or nothing is found when requesting for a secret,
- then the SDK falls back to whatever value is on `process.env`.
-
The token enables the SDK to authenticate with Infisical to fetch back your secrets.
Although the SDK requires you to pass in a token, it enables greater efficiency and security
@@ -114,6 +110,6 @@ At this stage, you know how to fetch secrets from Infisical back to your Python
See also:
-- Explore the [Python SDK](https://github.com/Infisical/infisical-python)
+- Explore the [Python SDK](https://github.com/Infisical/sdk/tree/main/crates/infisical-py)
From a15ba28c18b06feabfee97bee815a35b4d83465d Mon Sep 17 00:00:00 2001
From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com>
Date: Tue, 23 Jan 2024 08:47:20 +0400
Subject: [PATCH 3/4] Update node guide to reflect new SDK
---
docs/documentation/guides/node.mdx | 53 ++++++++++++++++--------------
1 file changed, 28 insertions(+), 25 deletions(-)
diff --git a/docs/documentation/guides/node.mdx b/docs/documentation/guides/node.mdx
index d182840b4..1e00aed99 100644
--- a/docs/documentation/guides/node.mdx
+++ b/docs/documentation/guides/node.mdx
@@ -5,7 +5,7 @@ title: "Node"
This guide demonstrates how to use Infisical to manage secrets for your Node stack from local development to production. It uses:
- Infisical (you can use [Infisical Cloud](https://app.infisical.com) or a [self-hosted instance of Infisical](https://infisical.com/docs/self-hosting/overview)) to store your secrets.
-- The [infisical-node](https://github.com/Infisical/infisical-node) client SDK to fetch secrets back to your Node application on demand.
+- The [@infisical/sdk](https://github.com/Infisical/sdk/tree/main/languages/node) Node.js client SDK to fetch secrets back to your Node application on demand.
## Project Setup
@@ -17,13 +17,11 @@ To begin, we need to set up a project in Infisical and add secrets to an environ
2. Add a secret to the development environment of this project so we can pull it back for local development. In the **Secrets Overview** page, press **Explore Development** and add a secret with the key `NAME` and value `YOUR_NAME`.
-### Create an Infisical Token
+### Create a Machine Identity
-Now that we've created a project and added a secret to its development environment, we need to provision an Infisical Token that our Node application can use to access the secret.
+Now that we've created a project and added a secret to its development environment, we need to configure an Infisical Machine Identity that our Node application can use to access the secret.
-1. Head to the **Project Settings > Service Tokens** and press **Add New Token**.
-2. Call the token anything like **My App Token** and select **Development** under **Environment**.
-3. Copy the token and keep it handy.
+- [How to setup machine identities](/documentation/platform/identities/overview)
## Create a Node app
@@ -41,27 +39,43 @@ npm init -y
Install `express` and [infisical-node](https://github.com/Infisical/infisical-node), the client Node SDK for Infisical.
```console
-npm install express infisical-node
+npm install express @infisical/sdk
```
Finally, create an index.js file containing the application code.
```js
-const express = require("express");
+const express = require('express');
+const { InfisicalClient, LogLevel } = require("@infisical/sdk");
+
const app = express();
+
const PORT = 3000;
const client = new InfisicalClient({
- token: "YOUR_INFISICAL_TOKEN"
+ clientId: "YOUR_CLIENT_ID",
+ clientSecret: "YOUR_CLIENT_SECRET",
+ logLevel: LogLevel.Error
});
app.get("/", async (req, res) => {
- const name = (await client.getSecret("NAME")).secretValue;
- res.send(`Hello, ${name}!`);
+ // access value
+
+ const name = await client.getSecret({
+ environment: "dev",
+ projectId: "PROJECT_ID",
+ path: "/",
+ type: "shared",
+ secretName: "NAME"
+ });
+
+ res.send(`Hello! My name is: ${name.secretValue}`);
});
-app.listen(PORT, () => {
- console.log(`Example app listening on port ${PORT}`);
+app.listen(PORT, async () => {
+ // initialize client
+
+ console.log(`App listening on port ${port}`);
});
```
@@ -82,13 +96,6 @@ At this stage, you know how to fetch secrets from Infisical back to your Node ap
## FAQ
-
- No. Infisical uses end-to-end encryption which ensures that secrets are always encrypted in transit
- and decrypted on the client side. In fact, not even the server can decrypt your secrets (unless
- that permission is explicitly granted from within the platform).
-
- Check out the [security guide](/security/overview).
-
The client SDK caches every secret and implements a 5-minute waiting period before
re-requesting it. The waiting period can be controlled by setting the `cacheTTL` parameter at
@@ -98,10 +105,6 @@ At this stage, you know how to fetch secrets from Infisical back to your Node ap
The SDK caches every secret and falls back to the cached value if a request fails. If no cached
value ever-existed, the SDK falls back to whatever value is on `process.env`.
-
- Yes. If no `token` parameter is passed in at the time of initializing the client or nothing is found when requesting for a secret,
- then the SDK falls back to whatever value is on `process.env`.
-
The token enables the SDK to authenticate with Infisical to fetch back your secrets.
Although the SDK requires you to pass in a token, it enables greater efficiency and security
@@ -118,4 +121,4 @@ At this stage, you know how to fetch secrets from Infisical back to your Node ap
See also:
-- Explore the [Node SDK](https://github.com/Infisical/infisical-node)
+- Explore the [Node SDK](https://github.com/Infisical/sdk/tree/main/languages/node)
From 046557c97fca108bcae2de51e788cbb7ef4465fe Mon Sep 17 00:00:00 2001
From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com>
Date: Tue, 23 Jan 2024 08:47:29 +0400
Subject: [PATCH 4/4] Add .NET
---
docs/documentation/getting-started/sdks.mdx | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/documentation/getting-started/sdks.mdx b/docs/documentation/getting-started/sdks.mdx
index f773e79ea..aef15294a 100644
--- a/docs/documentation/getting-started/sdks.mdx
+++ b/docs/documentation/getting-started/sdks.mdx
@@ -16,5 +16,6 @@ Follow the instructions for your language use the SDK for it:
- [Node SDK](https://infisical.com/docs/sdks/languages/node)
- [Python SDK](https://infisical.com/docs/sdks/languages/python)
- [Java SDK](https://infisical.com/docs/sdks/languages/java)
+- [.NET SDK](https://infisical.com/docs/sdks/languages/csharp)
Missing a language? [Throw in a request](https://github.com/Infisical/infisical/issues).
\ No newline at end of file