diff --git a/backend/src/services/integration-auth/integration-sync-secret.ts b/backend/src/services/integration-auth/integration-sync-secret.ts index 5085d4253..ad8aad5a3 100644 --- a/backend/src/services/integration-auth/integration-sync-secret.ts +++ b/backend/src/services/integration-auth/integration-sync-secret.ts @@ -1006,12 +1006,28 @@ const syncSecretsAWSSecretManager = async ({ } }; + let secretsToProcess: Record = {}; + if (metadata && metadata.secretPrefix) { + const { secretPrefix } = metadata; + + // Update each secret to have the secret prefix + Object.keys(secrets).forEach((key) => { + if (key.startsWith(secretPrefix)) { + secretsToProcess[key] = secrets[key]; + } else { + secretsToProcess[`${secretPrefix}${key}`] = secrets[key]; + } + }); + } else { + secretsToProcess = secrets; + } + if (metadata.mappingBehavior === IntegrationMappingBehavior.ONE_TO_ONE) { - for await (const [key, value] of Object.entries(secrets)) { + for await (const [key, value] of Object.entries(secretsToProcess)) { await processAwsSecret(key, value.value); } } else { - await processAwsSecret(integration.app as string, getSecretKeyValuePair(secrets)); + await processAwsSecret(integration.app as string, getSecretKeyValuePair(secretsToProcess)); } }; diff --git a/frontend/src/pages/integrations/aws-secret-manager/create.tsx b/frontend/src/pages/integrations/aws-secret-manager/create.tsx index 10bf190ed..d18379789 100644 --- a/frontend/src/pages/integrations/aws-secret-manager/create.tsx +++ b/frontend/src/pages/integrations/aws-secret-manager/create.tsx @@ -104,6 +104,7 @@ export default function AWSSecretManagerCreateIntegrationPage() { const [tagKey, setTagKey] = useState(""); const [tagValue, setTagValue] = useState(""); const [kmsKeyId, setKmsKeyId] = useState(""); + const [secretPrefix, setSecretPrefix] = useState(""); // const [path, setPath] = useState(''); // const [pathErrorText, setPathErrorText] = useState(''); @@ -165,6 +166,7 @@ export default function AWSSecretManagerCreateIntegrationPage() { ] } : {}), + ...(secretPrefix && { secretPrefix }), ...(kmsKeyId && { kmsKeyId }), mappingBehavior: selectedMappingBehavior } @@ -325,7 +327,7 @@ export default function AWSSecretManagerCreateIntegrationPage() { {shouldTag && ( -
+
)} + + + setSecretPrefix(e.target.value)} + placeholder="INFISICAL_" + /> + +