Merge branch 'main' into feat/azureClientSecretsRotation

This commit is contained in:
carlosmonastyrski
2025-04-29 19:26:14 -03:00
382 changed files with 9283 additions and 1029 deletions

View File

@@ -146,6 +146,34 @@ Infisical supports two methods for connecting to AWS.
</Accordion>
</AccordionGroup>
</Tab>
<Tab title="Secret Rotation">
<AccordionGroup>
<Accordion title="AWS IAM">
Use the following custom policy to grant the minimum permissions required by Infisical to rotate secrets to AWS Access Keys:
![IAM Role Secret Rotation Permissions](/images/app-connections/aws/iam-role-secret-rotation-permissions.png)
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ListAccessKeys",
"iam:CreateAccessKey",
"iam:UpdateAccessKey",
"iam:DeleteAccessKey",
"iam:ListUsers"
],
"Resource": "*"
}
]
}
```
</Accordion>
</AccordionGroup>
</Tab>
</Tabs>
</Step>
@@ -293,6 +321,34 @@ Infisical supports two methods for connecting to AWS.
</Accordion>
</AccordionGroup>
</Tab>
<Tab title="Secret Rotation">
<AccordionGroup>
<Accordion title="AWS IAM">
Use the following custom policy to grant the minimum permissions required by Infisical to rotate secrets to AWS Access Keys:
![IAM Role Secret Rotation Permissions](/images/app-connections/aws/iam-role-secret-rotation-permissions.png)
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ListAccessKeys",
"iam:CreateAccessKey",
"iam:UpdateAccessKey",
"iam:DeleteAccessKey",
"iam:ListUsers"
],
"Resource": "*"
}
]
}
```
</Accordion>
</AccordionGroup>
</Tab>
</Tabs>
</Step>
<Step title="Obtain Access Key ID and Secret Access Key">

View File

@@ -0,0 +1,96 @@
---
title: "LDAP Connection"
description: "Learn how to configure an LDAP Connection for Infisical."
---
Infisical supports the use of [Simple Binding](https://ldap.com/the-ldap-bind-operation) to connect with your LDAP provider.
## Prerequisites
You will need the following information to establish an LDAP connection:
- **LDAP URL** - The LDAP/LDAPS URL to connect to (e.g., ldap://domain-or-ip:389 or ldaps://domain-or-ip:636)
- **Binding DN** - The Distinguished Name (DN) of the principal to bind with (e.g., 'CN=John,CN=Users,DC=example,DC=com')
- **Binding Password** - The password to bind with for authentication
- **CA Certificate** - The SSL certificate (PEM format) to use for secure connection when using ldaps:// with a self-signed certificate
Depending on how you intend to use your LDAP connection, there may be additional requirements:
<Tabs>
<Tab title="Secret Rotation">
<Note>
For Password Rotation, the following requirements must additionally be met:
- You must use an LDAPS connection
- The binding user must either have:
- Permission to change other users passwords if rotating directory users' passwords
- Permission to update their own password if rotating their personal password
</Note>
</Tab>
</Tabs>
## Setup LDAP Connection in Infisical
<Tabs>
<Tab title="Infisical UI">
1. Navigate to the App Connections tab on the Organization Settings page.
![App Connections Tab](/images/app-connections/general/add-connection.png)
2. Select the **LDAP Connection** option.
![Select LDAP Connection](/images/app-connections/ldap/select-ldap-connection.png)
3. Select the **Simple Bind** method option and provide the details obtained from the previous section and press **Connect to Provider**.
![Create LDAP Connection](/images/app-connections/ldap/create-simple-bind-method.png)
4. Your **LDAP Connection** is now available for use.
![Assume Role LDAP Connection](/images/app-connections/ldap/simple-bind-connection.png)
</Tab>
<Tab title="API">
To create an LDAP Connection, make an API request to the [Create LDAP
Connection](/api-reference/endpoints/app-connections/ldap/create) API endpoint.
### Sample request
```bash Request
curl --request POST \
--url https://app.infisical.com/api/v1/app-connections/ldap \
--header 'Content-Type: application/json' \
--data '{
"name": "my-ldap-connection",
"method": "simple-bind",
"credentials": {
"provider": "active-directory",
"url": "ldaps://domain-or-ip:636",
"dn": "CN=John,CN=Users,DC=example,DC=com",
"password": "<your-secure-password>",
"sslRejectUnauthorized": true,
"sslCertificate": "..."
}
}'
```
### Sample response
```bash Response
{
"appConnection": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "my-ldap-connection",
"version": 1,
"orgId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"app": "ldap",
"method": "simple-bind",
"credentials": {
"provider": "active-directory",
"url": "ldaps://domain-or-ip:636",
"dn": "CN=John,CN=Users,DC=example,DC=com",
"sslRejectUnauthorized": true,
"sslCertificate": "..."
}
}
}
```
</Tab>
</Tabs>

View File

@@ -0,0 +1,119 @@
---
title: "TeamCity Connection"
description: "Learn how to configure a TeamCity Connection for Infisical."
---
Infisical supports connecting to TeamCity using an Access Token to securely sync your secrets to TeamCity.
## Setup TeamCity Connection in Infisical
<Steps>
<Step title="Navigate to your profile on TeamCity">
Navigate to the TeamCity **Profile** page by clicking on your profile icon in the bottom-left corner.
![TeamCity Main Page](/images/app-connections/teamcity/teamcity-main-page.png)
</Step>
<Step title="Select Access Tokens Tab">
Select the **Access Tokens** tab from the left sidebar navigation menu.
![TeamCity Token Page](/images/app-connections/teamcity/teamcity-token-page.png)
</Step>
<Step title="Create the Access Token">
Click the **Create access token** button and provide a name for your token (e.g., "Infisical Integration"). You may set an expiration date or leave it blank for no expiry.
The permission scope can either be **Same as current user** or **Limit per project**.
If you're choosing **Limit per project**, make sure you select the relevant project and enable the permissions relevant to your use case:
<Tabs>
<Tab title="Secret Sync Permissions">
- View build configuration settings
- Edit project
</Tab>
</Tabs>
![TeamCity Token Popup](/images/app-connections/teamcity/teamcity-token-popup.png)
<Note>
Setting your permission scope to **Same as current user** will allow your integration to access multiple projects as long as the current user has read and write access to them.
</Note>
<Note>
If you configure an expiry date for your access token, you must manually rotate to a new token before the expiration date to prevent service interruption.
</Note>
</Step>
<Step title="Copy the Access Token">
After creation, a modal with the Access Token will be displayed. Copy this token immediately and store it securely, as you won't be able to view it again after closing this dialog.
![TeamCity Token Copy Popup](/images/app-connections/teamcity/teamcity-token-copy.png)
</Step>
<Step title="Token Created">
You should now see your newly created token in the list of access tokens.
![TeamCity Token Created](/images/app-connections/teamcity/teamcity-token-created.png)
</Step>
<Step title="Setup TeamCity Connection in Infisical">
<Tabs>
<Tab title="Infisical UI">
1. Navigate to App Connections
In your Infisical dashboard, go to **Organization Settings** and select the [**App Connections**](https://app.infisical.com/organization/app-connections) tab.
![App Connections Tab](/images/app-connections/general/add-connection.png)
2. Add Connection
Click the **+ Add Connection** button and select the **TeamCity Connection** option from the available integrations.
![Select TeamCity Connection](/images/app-connections/teamcity/teamcity-app-connection-option.png)
3. Fill the TeamCity Connection Modal
Complete the TeamCity Connection form by entering:
- A descriptive name for the connection
- The Access Token you generated in steps 3-4
- The URL of your TeamCity instance
- An optional description for future reference
![TeamCity Connection Modal](/images/app-connections/teamcity/teamcity-app-connection-modal.png)
4. Connection Created
After clicking Create, your **TeamCity Connection** is established and ready to use with your Infisical projects.
![TeamCity Connection Created](/images/app-connections/teamcity/teamcity-app-connection-created.png)
</Tab>
<Tab title="API">
To create a TeamCity Connection, make an API request to the [Create TeamCity
Connection](/api-reference/endpoints/app-connections/teamcity/create) API endpoint.
### Sample request
```bash Request
curl --request POST \
--url https://app.infisical.com/api/v1/app-connections/teamcity \
--header 'Content-Type: application/json' \
--data '{
"name": "my-teamcity-connection",
"method": "access-token",
"credentials": {
"accessToken": "...",
"instanceUrl": "https://yourcompany.teamcity.com"
}
}'
```
### Sample response
```bash Response
{
"appConnection": {
"id": "e5d18aca-86f7-4026-a95e-efb8aeb0d8e6",
"name": "my-teamcity-connection",
"description": null,
"version": 1,
"orgId": "6f03caa1-a5de-43ce-b127-95a145d3464c",
"createdAt": "2025-04-23T19:46:34.831Z",
"updatedAt": "2025-04-23T19:46:34.831Z",
"isPlatformManagedCredentials": false,
"credentialsHash": "7c2d371dec195f82a6a0d5b41c970a229cfcaf88e894a5b6395e2dbd0280661f",
"app": "teamcity",
"method": "access-token",
"credentials": {
"instanceUrl": "https://yourcompany.teamcity.com"
}
}
}
```
</Tab>
</Tabs>
</Step>
</Steps>

View File

@@ -3,43 +3,6 @@ title: "TeamCity"
description: "How to sync secrets from Infisical to TeamCity"
---
Prerequisites:
- Set up and add envars to [Infisical Cloud](https://app.infisical.com)
<Steps>
<Step title="Authorize Infisical for TeamCity">
Obtain a TeamCity Access Token in Profile > Access Tokens
![integrations teamcity dashboard](../../images/integrations/teamcity/integrations-teamcity-dashboard.png)
![integrations teamcity token](../../images/integrations/teamcity/integrations-teamcity-token.png)
<Note>
For this integration to work, the TeamCity Access Token must either have the
**Same as current user** account-wide permission enabled or, if **Limit per project**
is selected, then it must at minimum have the **View build configuration settings** and **Edit project** permissions enabled.
</Note>
Navigate to your project's integrations tab in Infisical.
![integrations](../../images/integrations.png)
Press on the TeamCity tile and input your TeamCity Access Token and Server URL to grant Infisical access to your TeamCity account.
![integrations teamcity authorization](../../images/integrations/teamcity/integrations-teamcity-auth.png)
</Step>
<Step title="Start integration">
Select which Infisical environment secrets you want to sync to which TeamCity project (and optionally build configuration) and press create integration to start syncing secrets to TeamCity.
![integrations teamcity](../../images/integrations/teamcity/integrations-teamcity-create.png)
<Note>
Infisical integrates with both TeamCity's project-level and build configuration-level environment variables.
To sync secrets to a specific build configuration in a TeamCity project, you can select a build configuration from the **TeamCity Build Config** dropdown; otherwise, leaving it empty will sync secrets to TeamCity at the project-level.
</Note>
![integrations teamcity](../../images/integrations/teamcity/integrations-teamcity.png)
</Step>
</Steps>
<Note>
The TeamCity Native Integration will be deprecated in 2026. Please migrate to our new [TeamCity Sync](../secret-syncs/teamcity).
</Note>

View File

@@ -3,39 +3,6 @@ title: "Windmill"
description: "How to sync secrets from Infisical to Windmill"
---
Prerequisites:
- Set up and add envars to [Infisical Cloud](https://app.infisical.com)
<Steps>
<Step title="Authorize Infisical for Windmill">
Obtain a [Windmill](https://www.windmill.dev/) access token in Access Tokens
![integrations windmill dashboard](../../images/integrations/windmill/integrations-windmill-dashboard.png)
![integrations windmill token](../../images/integrations/windmill/integrations-windmill-token.png)
Navigate to your project's integrations tab in Infisical.
![integrations](../../images/integrations.png)
Press on the Windmill tile and input your Windmill access token to grant Infisical access to your Windmill account.
![integrations windmill authorization](../../images/integrations/windmill/integrations-windmill-auth.png)
</Step>
<Step title="Start integration">
Select which Infisical environment secrets you want to sync to which Windmill workspace and press create integration to start syncing secrets to Windmill.
![integrations windmill](../../images/integrations/windmill/integrations-windmill-create.png)
![integrations windmill](../../images/integrations/windmill/integrations-windmill.png)
<Warning>
Secrets synced to Windmill are subject to the [ownership path
prefix](https://www.windmill.dev/docs/core_concepts/roles_and_permissions)
convention of Windmill. Accordingly, all secrets must be prefixed with either
`u/` or `f/` for user-based and folder-based secret along with the name of the
secret. Put differently, you must use the full path of the secret as its name
in Infisical to be considered valid such as `u/user/FOO/BAR`.
</Warning>
</Step>
</Steps>
<Note>
The Windmill Native Integration will be deprecated in 2026. Please migrate to our new [Windmill Sync](../secret-syncs/windmill).
</Note>

View File

@@ -0,0 +1,152 @@
---
title: "TeamCity Sync"
description: "Learn how to configure a TeamCity Sync for Infisical."
---
**Prerequisites:**
- Set up and add secrets to [Infisical Cloud](https://app.infisical.com)
- Create a [TeamCity Connection](/integrations/app-connections/teamcity) with the required **Secret Sync** permissions
<Tabs>
<Tab title="Infisical UI">
1. Navigate to **Project** > **Integrations** and select the **Secret Syncs** tab. Click on the **Add Sync** button.
![Secret Syncs Tab](/images/secret-syncs/general/secret-sync-tab.png)
2. Select the **TeamCity** option.
![Select TeamCity](/images/secret-syncs/teamcity/select-teamcity-option.png)
3. Configure the **Source** from where secrets should be retrieved, then click **Next**.
![Configure Source](/images/secret-syncs/teamcity/teamcity-sync-source.png)
- **Environment**: The project environment to retrieve secrets from.
- **Secret Path**: The folder path to retrieve secrets from.
<Tip>
If you need to sync secrets from multiple folder locations, check out [secret imports](/documentation/platform/secret-reference#secret-imports).
</Tip>
4. Configure the **Destination** to where secrets should be deployed, then click **Next**.
![Configure Destination](/images/secret-syncs/teamcity/teamcity-sync-destination.png)
- **TeamCity Connection**: The TeamCity Connection to authenticate with.
- **Project**: The TeamCity project to sync secrets to.
- **Build Configuration**: The build configuration to sync secrets to.
<Note>
Not including a Build Configuration will sync secrets to the project.
</Note>
5. Configure the **Sync Options** to specify how secrets should be synced, then click **Next**.
![Configure Options](/images/secret-syncs/teamcity/teamcity-sync-options.png)
- **Initial Sync Behavior**: Determines how Infisical should resolve the initial sync.
- **Overwrite Destination Secrets**: Removes any secrets at the destination endpoint not present in Infisical.
- **Import Secrets (Prioritize Infisical)**: Imports secrets from the destination endpoint before syncing, prioritizing values from Infisical over TeamCity when keys conflict.
- **Import Secrets (Prioritize TeamCity)**: Imports secrets from the destination endpoint before syncing, prioritizing values from TeamCity over Infisical when keys conflict.
<Note>
Infisical only syncs secrets from within the target scope; inherited secrets will not be imported.
</Note>
- **Auto-Sync Enabled**: If enabled, secrets will automatically be synced from the source location when changes occur. Disable to enforce manual syncing only.
- **Disable Secret Deletion**: If enabled, Infisical will not remove secrets from the sync destination. Enable this option if you intend to manage some secrets manually outside of Infisical.
6. Configure the **Details** of your TeamCity Sync, then click **Next**.
![Configure Details](/images/secret-syncs/teamcity/teamcity-sync-details.png)
- **Name**: The name of your sync. Must be slug-friendly.
- **Description**: An optional description for your sync.
7. Review your TeamCity Sync configuration, then click **Create Sync**.
![Confirm Configuration](/images/secret-syncs/teamcity/teamcity-sync-review.png)
8. If enabled, your TeamCity Sync will begin syncing your secrets to the destination endpoint.
![Sync Secrets](/images/secret-syncs/teamcity/teamcity-sync-created.png)
</Tab>
<Tab title="API">
To create a **TeamCity Sync**, make an API request to the [Create TeamCity Sync](/api-reference/endpoints/secret-syncs/teamcity/create) API endpoint.
### Sample request
```bash Request
curl --request POST \
--url https://app.infisical.com/api/v1/secret-syncs/teamcity \
--header 'Content-Type: application/json' \
--data '{
"name": "my-teamcity-sync",
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "an example sync",
"connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"environment": "dev",
"secretPath": "/my-secrets",
"isEnabled": true,
"syncOptions": {
"initialSyncBehavior": "overwrite-destination"
},
"destinationConfig": {
"project": "TestProject",
"buildConfig": "TestBuildConfig"
}
}'
```
<Note>
The **Project** and **Build Config** parameters must use project and build configuration IDs, not their names.
</Note>
### Sample response
```bash Response
{
"secretSync": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "my-teamcity-sync",
"description": "an example sync",
"isEnabled": true,
"version": 1,
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"syncStatus": "succeeded",
"lastSyncJobId": "123",
"lastSyncMessage": null,
"lastSyncedAt": "2023-11-07T05:31:56Z",
"importStatus": null,
"lastImportJobId": null,
"lastImportMessage": null,
"lastImportedAt": null,
"removeStatus": null,
"lastRemoveJobId": null,
"lastRemoveMessage": null,
"lastRemovedAt": null,
"syncOptions": {
"initialSyncBehavior": "overwrite-destination"
},
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"connection": {
"app": "teamcity",
"name": "my-teamcity-connection",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"environment": {
"slug": "dev",
"name": "Development",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"folder": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"path": "/my-secrets"
},
"destination": "teamcity",
"destinationConfig": {
"project": "TestProject",
"buildConfig": "TestBuildConfig"
}
}
}
```
</Tab>
</Tabs>