Skip to content

Commit c19956b

Browse files
authored
[backend] Improve Cyberark secret mapping (#14588)
1 parent 0f1ee38 commit c19956b

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

opencti-platform/opencti-graphql/src/config/credentials.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,6 @@ export const getRemoteCredentialsProviderFields = (prefix: string, provider: str
1212
return conf.get(`${prefix}:credentials_provider:${provider}:field_targets`) || conf.get(`${prefix}:credentials_provider:field_targets`) || [];
1313
};
1414

15-
export const getRemoteCredentialsFields = (prefix: string) => {
16-
const provider = getRemoteCredentialsProviderSelector(prefix);
17-
if (provider) {
18-
return getRemoteCredentialsProviderFields(prefix, provider);
19-
}
20-
return [];
21-
};
22-
2315
export const enrichWithRemoteCredentials = async (prefix: string, baseConfiguration: any) => {
2416
const provider = getRemoteCredentialsProviderSelector(prefix);
2517
if (provider) {

opencti-platform/opencti-graphql/src/modules/authenticationProvider/authenticationProvider-domain.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import { getPlatformCrypto } from '../../utils/platformCrypto';
3535
import { memoize } from '../../utils/memoize';
3636
import { logAuthInfo } from './providers-logger';
3737
import { isNotEmptyField } from '../../database/utils';
38-
import { enrichWithRemoteCredentials, getRemoteCredentialsProviderSelector } from '../../config/credentials';
38+
import { enrichWithRemoteCredentials, getRemoteCredentialsProviderFields, getRemoteCredentialsProviderSelector } from '../../config/credentials';
3939

4040
// Type for data that are encrypted
4141
const getKeyPair = memoize(async () => {
@@ -79,15 +79,22 @@ export const buildSecretInfos = (
7979
return result;
8080
};
8181

82+
const secretFieldNameSeparator = ':';
83+
8284
export const getAvailableSecrets = (): AvailableSecretInfo[] => {
8385
const secrets = conf.get('secrets');
8486
if (!secrets || typeof secrets !== 'object') {
8587
return [];
8688
}
8789
return Object.keys(secrets).flatMap((name) => {
88-
const provider = getRemoteCredentialsProviderSelector(`secrets:${name}`);
90+
const prefix = `secrets:${name}`;
91+
const provider = getRemoteCredentialsProviderSelector(prefix);
8992
if (provider) {
90-
return { provider_name: provider, secret_name: name };
93+
const secretFields = getRemoteCredentialsProviderFields(prefix, provider);
94+
return secretFields.map((field) => ({
95+
provider_name: provider,
96+
secret_name: `${name}${secretFieldNameSeparator}${field}`,
97+
}));
9198
}
9299
if (conf.get(`secrets:${name}:value`)) {
93100
return { provider_name: 'env', secret_name: name };
@@ -96,8 +103,9 @@ export const getAvailableSecrets = (): AvailableSecretInfo[] => {
96103
});
97104
};
98105

99-
const getSecretValueByName = async (secretName: string, fieldName: string): Promise<string | undefined> => {
100-
const prefix = `secrets:${secretName}`;
106+
const getSecretValueByName = async (secretName: string): Promise<string | undefined> => {
107+
const [name, fieldName] = secretName.split(secretFieldNameSeparator);
108+
const prefix = `secrets:${name}`;
101109
if (getRemoteCredentialsProviderSelector(prefix)) {
102110
const enriched = await enrichWithRemoteCredentials(prefix, {});
103111
return enriched[fieldName];
@@ -109,7 +117,7 @@ export const retrieveSecrets = async (config: any): Promise<SecretProvider> => {
109117
const resolve = async (field: string): Promise<string | undefined> => {
110118
const secretName = config[`${field}_ref`];
111119
if (isNotEmptyField(secretName)) {
112-
return getSecretValueByName(secretName, field);
120+
return getSecretValueByName(secretName);
113121
}
114122
const encryptedValue = config[`${field}_encrypted`];
115123
if (isNotEmptyField(encryptedValue)) {

0 commit comments

Comments
 (0)