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] 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)