diff --git a/docs/images/integrations/azure-key-vault/integrations-azure-key-vault-tenant-select.png b/docs/images/integrations/azure-key-vault/integrations-azure-key-vault-tenant-select.png new file mode 100644 index 000000000..6c63aaea1 Binary files /dev/null and b/docs/images/integrations/azure-key-vault/integrations-azure-key-vault-tenant-select.png differ diff --git a/docs/integrations/cloud/azure-app-configuration.mdx b/docs/integrations/cloud/azure-app-configuration.mdx index d2780a905..69ef4a97d 100644 --- a/docs/integrations/cloud/azure-app-configuration.mdx +++ b/docs/integrations/cloud/azure-app-configuration.mdx @@ -29,6 +29,15 @@ description: "How to sync secrets from Infisical to Azure App Configuration" ![integrations](../../images/integrations/azure-app-configuration/create-integration-form.png) Press create integration to start syncing secrets to Azure App Configuration. + + + The Azure App Configuration integration requires the following permissions to be set on the user / service principal + for Infisical to sync secrets to Azure App Configuration: `Read Key-Value`, `Write Key-Value`, `Delete Key-Value`. + + Any role with these permissions would work such as the **App Configuration Data Owner** role. Alternatively, you can use the + **App Configuration Data Reader** role for read-only access or **App Configuration Data Contributor** role for read/write access. + + diff --git a/docs/integrations/cloud/azure-key-vault.mdx b/docs/integrations/cloud/azure-key-vault.mdx index d04d90b4f..ae04fda88 100644 --- a/docs/integrations/cloud/azure-key-vault.mdx +++ b/docs/integrations/cloud/azure-key-vault.mdx @@ -17,6 +17,10 @@ description: "How to sync secrets from Infisical to Azure Key Vault" ![integrations](../../images/integrations.png) Press on the Azure Key Vault tile and grant Infisical access to Azure Key Vault. + You can optionally authenticate against a specific tenant by providing the Azure tenant or directory ID. + + ![integrations](/images/integrations/azure-key-vault/integrations-azure-key-vault-tenant-select.png) + Obtain the Vault URI of your key vault in the Overview tab. diff --git a/frontend/src/pages/integrations/azure-key-vault/authorize.tsx b/frontend/src/pages/integrations/azure-key-vault/authorize.tsx new file mode 100644 index 000000000..82b4b111a --- /dev/null +++ b/frontend/src/pages/integrations/azure-key-vault/authorize.tsx @@ -0,0 +1,100 @@ +import { Controller, useForm } from "react-hook-form"; +import Head from "next/head"; +import Image from "next/image"; +import Link from "next/link"; +import { useRouter } from "next/router"; +import { faArrowUpRightFromSquare, faBookOpen } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { zodResolver } from "@hookform/resolvers/zod"; +import z from "zod"; + +import { Button, Card, CardTitle, FormControl, Input } from "@app/components/v2"; + +const schema = z.object({ + tenantId: z.string().trim().optional() +}); + +type FormData = z.infer; + +export default function AzureKeyVaultAuthorizeIntegrationPage() { + const router = useRouter(); + const { state, clientId } = router.query; + const { control, handleSubmit } = useForm({ + resolver: zodResolver(schema) + }); + + const onFormSubmit = async ({ tenantId }: FormData) => { + const link = `https://login.microsoftonline.com/${ + tenantId ?? "common" + }/oauth2/v2.0/authorize?client_id=${clientId}&response_type=code&redirect_uri=${ + window.location.origin + }/integrations/azure-key-vault/oauth2/callback&response_mode=query&scope=https://vault.azure.net/.default openid offline_access&state=${state}`; + + window.location.assign(link); + }; + + return ( +
+ + Authorize Azure Key Vault Integration + + + + +
+
+ Azure logo +
+ Azure Key Vault Integration + + +
+ + Docs + +
+
+ +
+
+
+ ( + + + + )} + /> + + +
+
+ ); +} + +AzureKeyVaultAuthorizeIntegrationPage.requireAuth = true; diff --git a/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx b/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx index e1a1ff6fb..93083e72a 100644 --- a/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx +++ b/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx @@ -69,7 +69,7 @@ export const redirectForProviderAuth = (integrationOption: TCloudIntegration) => createIntegrationMissingEnvVarsNotification(integrationOption.slug); return; } - link = `https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${integrationOption.clientId}&response_type=code&redirect_uri=${window.location.origin}/integrations/azure-key-vault/oauth2/callback&response_mode=query&scope=https://vault.azure.net/.default openid offline_access&state=${state}`; + link = `${window.location.origin}/integrations/azure-key-vault/authorize?clientId=${integrationOption.clientId}&state=${state}`; break; case "azure-app-configuration": if (!integrationOption.clientId) {