diff --git a/backend/src/ee/services/dynamic-secret/providers/aws-elasticache.ts b/backend/src/ee/services/dynamic-secret/providers/aws-elasticache.ts index fd50ab7ce..4b86af323 100644 --- a/backend/src/ee/services/dynamic-secret/providers/aws-elasticache.ts +++ b/backend/src/ee/services/dynamic-secret/providers/aws-elasticache.ts @@ -183,7 +183,12 @@ export const AwsElastiCacheDatabaseProvider = (): TDynamicProviderFns => { } catch (err) { const sanitizedErrorMessage = sanitizeString({ unsanitizedString: (err as Error)?.message, - tokens: [providerInputs.accessKeyId, providerInputs.secretAccessKey, providerInputs.clusterName] + tokens: [ + providerInputs.accessKeyId, + providerInputs.secretAccessKey, + providerInputs.clusterName, + providerInputs.region + ] }); throw new BadRequestError({ message: `Failed to connect with provider: ${sanitizedErrorMessage}` diff --git a/backend/src/ee/services/dynamic-secret/providers/aws-iam.ts b/backend/src/ee/services/dynamic-secret/providers/aws-iam.ts index ce68497d5..d4fceb674 100644 --- a/backend/src/ee/services/dynamic-secret/providers/aws-iam.ts +++ b/backend/src/ee/services/dynamic-secret/providers/aws-iam.ts @@ -180,47 +180,49 @@ export const AwsIamProvider = (): TDynamicProviderFns => { awsTags.push(...additionalTags); } - const createUserRes = await client.send( - new CreateUserCommand({ - Path: awsPath, - PermissionsBoundary: permissionBoundaryPolicyArn || undefined, - Tags: awsTags, - UserName: username - }) - ); - - if (!createUserRes.User) throw new BadRequestError({ message: "Failed to create AWS IAM User" }); - if (userGroups) { - await Promise.all( - userGroups - .split(",") - .filter(Boolean) - .map((group) => - client.send(new AddUserToGroupCommand({ UserName: createUserRes?.User?.UserName, GroupName: group })) - ) - ); - } - if (policyArns) { - await Promise.all( - policyArns - .split(",") - .filter(Boolean) - .map((policyArn) => - client.send(new AttachUserPolicyCommand({ UserName: createUserRes?.User?.UserName, PolicyArn: policyArn })) - ) - ); - } - if (policyDocument) { - await client.send( - new PutUserPolicyCommand({ - UserName: createUserRes.User.UserName, - PolicyName: `infisical-dynamic-policy-${alphaNumericNanoId(4)}`, - PolicyDocument: policyDocument + try { + const createUserRes = await client.send( + new CreateUserCommand({ + Path: awsPath, + PermissionsBoundary: permissionBoundaryPolicyArn || undefined, + Tags: awsTags, + UserName: username }) ); - } - try { + if (!createUserRes.User) throw new BadRequestError({ message: "Failed to create AWS IAM User" }); + if (userGroups) { + await Promise.all( + userGroups + .split(",") + .filter(Boolean) + .map((group) => + client.send(new AddUserToGroupCommand({ UserName: createUserRes?.User?.UserName, GroupName: group })) + ) + ); + } + if (policyArns) { + await Promise.all( + policyArns + .split(",") + .filter(Boolean) + .map((policyArn) => + client.send( + new AttachUserPolicyCommand({ UserName: createUserRes?.User?.UserName, PolicyArn: policyArn }) + ) + ) + ); + } + if (policyDocument) { + await client.send( + new PutUserPolicyCommand({ + UserName: createUserRes.User.UserName, + PolicyName: `infisical-dynamic-policy-${alphaNumericNanoId(4)}`, + PolicyDocument: policyDocument + }) + ); + } + const createAccessKeyRes = await client.send( new CreateAccessKeyCommand({ UserName: createUserRes.User.UserName diff --git a/backend/src/ee/services/dynamic-secret/providers/azure-entra-id.ts b/backend/src/ee/services/dynamic-secret/providers/azure-entra-id.ts index 2f592edab..98386c4d3 100644 --- a/backend/src/ee/services/dynamic-secret/providers/azure-entra-id.ts +++ b/backend/src/ee/services/dynamic-secret/providers/azure-entra-id.ts @@ -114,12 +114,12 @@ export const AzureEntraIDProvider = (): TDynamicProviderFns & { }; const revoke = async (inputs: unknown, entityId: string) => { + const providerInputs = await validateProviderInputs(inputs); try { // Creates a new password await create({ inputs }); return { entityId }; } catch (err) { - const providerInputs = await validateProviderInputs(inputs); const sanitizedErrorMessage = sanitizeString({ unsanitizedString: (err as Error)?.message, tokens: [providerInputs.clientSecret, providerInputs.applicationId, entityId] diff --git a/backend/src/ee/services/dynamic-secret/providers/elastic-search.ts b/backend/src/ee/services/dynamic-secret/providers/elastic-search.ts index f07eb9f00..bde62fc61 100644 --- a/backend/src/ee/services/dynamic-secret/providers/elastic-search.ts +++ b/backend/src/ee/services/dynamic-secret/providers/elastic-search.ts @@ -66,11 +66,7 @@ export const ElasticSearchProvider = (): TDynamicProviderFns => { const connection = await $getClient(providerInputs); try { - const infoResponse = await connection - .info() - .then(() => true) - .catch(() => false); - + const infoResponse = await connection.info().then(() => true); return infoResponse; } catch (err) { const tokens = []; diff --git a/backend/src/ee/services/dynamic-secret/providers/ldap.ts b/backend/src/ee/services/dynamic-secret/providers/ldap.ts index 1c73fef14..10e0b88f4 100644 --- a/backend/src/ee/services/dynamic-secret/providers/ldap.ts +++ b/backend/src/ee/services/dynamic-secret/providers/ldap.ts @@ -216,7 +216,8 @@ export const LdapProvider = (): TDynamicProviderFns => { if (providerInputs.credentialType === LdapCredentialType.Static) { const dnRegex = new RE2("^dn:\\s*(.+)", "m"); const dnMatch = dnRegex.exec(providerInputs.rotationLdif); - const username = dnMatch?.[1] || ""; + const username = dnMatch?.[1]; + if (!username) throw new BadRequestError({ message: "Username not found from Ldif" }); const password = generatePassword(); if (dnMatch) { diff --git a/backend/src/ee/services/dynamic-secret/providers/redis.ts b/backend/src/ee/services/dynamic-secret/providers/redis.ts index 9421299d1..621c7d761 100644 --- a/backend/src/ee/services/dynamic-secret/providers/redis.ts +++ b/backend/src/ee/services/dynamic-secret/providers/redis.ts @@ -123,7 +123,12 @@ export const RedisDatabaseProvider = (): TDynamicProviderFns => { if (connection) await connection.quit(); const sanitizedErrorMessage = sanitizeString({ unsanitizedString: (err as Error)?.message, - tokens: [providerInputs.password || "", providerInputs.username, providerInputs.host] + tokens: [ + providerInputs.password || "", + providerInputs.username, + providerInputs.host, + String(providerInputs.port) + ] }); throw new BadRequestError({ message: `Failed to connect with provider: ${sanitizedErrorMessage}` diff --git a/backend/src/ee/services/dynamic-secret/providers/snowflake.ts b/backend/src/ee/services/dynamic-secret/providers/snowflake.ts index 23ccd7c29..a335c427b 100644 --- a/backend/src/ee/services/dynamic-secret/providers/snowflake.ts +++ b/backend/src/ee/services/dynamic-secret/providers/snowflake.ts @@ -155,7 +155,7 @@ export const SnowflakeProvider = (): TDynamicProviderFns => { sqlText: revokeStatement, complete(err) { if (err) { - return reject(); + return reject(err); } return resolve(true);