Skip to content

Commit b787647

Browse files
committed
Finish HMAC DB storage implementation
Signed-off-by: Ben <[email protected]>
1 parent cf69a0b commit b787647

9 files changed

+46
-2
lines changed

src/api/account_api.js

+3
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,9 @@ module.exports = {
445445
},
446446
endpoint_type: {
447447
$ref: 'common_api#/definitions/endpoint_type'
448+
},
449+
gcp_hmac_key: {
450+
$ref: 'common_api#/definitions/gcp_hmac_key'
448451
}
449452

450453
}

src/api/common_api.js

+11
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,17 @@ module.exports = {
897897
}
898898
},
899899

900+
gcp_access_id: { wrapper: SensitiveString },
901+
gcp_secret_key: { wrapper: SensitiveString },
902+
903+
gcp_hmac_key: {
904+
type: 'object',
905+
properties: {
906+
access_id: { $ref: '#/definitions/gcp_access_id' },
907+
secret_key: { $ref: '#/definitions/gcp_secret_key' },
908+
}
909+
},
910+
900911
ip_range: {
901912
type: 'object',
902913
required: ['start', 'end'],

src/api/pool_api.js

+1
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,7 @@ module.exports = {
624624
region: {
625625
type: 'string'
626626
},
627+
gcp_hmac_key: { $ref: 'common_api#/definitions/gcp_hmac_key' },
627628
}
628629
},
629630

src/sdk/namespace_gcp.js

+7
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ class NamespaceGCP {
4747
this.project_id = project_id;
4848
this.client_email = client_email;
4949
this.private_key = private_key;
50+
this.gcs = new GoogleCloudStorage({
51+
projectId: this.project_id,
52+
credentials: {
53+
client_email: this.client_email,
54+
private_key: this.private_key,
55+
}
56+
});
5057
this.s3_client = new AWS.S3({
5158
endpoint: 'https://storage.googleapis.com',
5259
accessKeyId: hmac_key.access_id,

src/sdk/object_sdk.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ class ObjectSDK {
402402
/**
403403
* @returns {nb.Namespace}
404404
*/
405-
// resource is a namespace_resource
405+
// resource contains the values of namespace_resource_extended_info
406406
_setup_single_namespace({ resource: r, path: p }, bucket_id, options) {
407407

408408
if (r.endpoint_type === 'NOOBAA') {
@@ -462,7 +462,8 @@ class ObjectSDK {
462462
private_key,
463463
access_mode: r.access_mode,
464464
stats: this.stats,
465-
hmac_key: r.gcp_hmac_key,
465+
hmac_key: { access_id : r.gcp_hmac_key.access_id.unwrap(),
466+
secret_key : r.gcp_hmac_key.secret_key.unwrap() }
466467
});
467468
}
468469
if (r.fs_root_path || r.fs_root_path === '') {

src/server/system_services/master_key_manager.js

+7
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,13 @@ class MasterKeysManager {
374374
master_key_id: ns_resource.account.master_key_id._id
375375
}, undefined);
376376
}
377+
if (ns_resource.connection.gcp_hmac_key?.secret_key) {
378+
ns_resource.connection.gcp_hmac_key.secret_key = await this.secret_keys_cache.get_with_cache({
379+
encrypted_value: ns_resource.connection.gcp_hmac_key.secret_key.unwrap(),
380+
undefined,
381+
master_key_id: ns_resource.account.master_key_id._id
382+
}, undefined);
383+
}
377384
}
378385
}
379386
}

src/server/system_services/pool_server.js

+12
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,16 @@ async function create_namespace_resource(req) {
277277
};
278278
}
279279

280+
let gcp_hmac_key;
281+
if (connection?.gcp_hmac_key?.secret_key) {
282+
gcp_hmac_key = {
283+
access_id: connection.gcp_hmac_key.access_id,
284+
secret_key: system_store.master_key_manager.encrypt_sensitive_string_with_master_key_id(
285+
connection.gcp_hmac_key.secret_key, req.account.master_key_id._id
286+
)
287+
};
288+
}
289+
280290
namespace_resource = new_namespace_resource_defaults(name, req.system._id, req.account._id, _.omitBy({
281291
aws_sts_arn: connection.aws_sts_arn,
282292
endpoint: connection.endpoint,
@@ -288,6 +298,7 @@ async function create_namespace_resource(req) {
288298
endpoint_type: connection.endpoint_type || 'AWS',
289299
region: connection.region,
290300
azure_log_access_keys,
301+
gcp_hmac_key,
291302
}, _.isUndefined), undefined, req.rpc_params.access_mode);
292303

293304
const cloud_buckets = await server_rpc.client.bucket.get_cloud_buckets({
@@ -1176,6 +1187,7 @@ function get_namespace_resource_extended_info(namespace_resource) {
11761187
secret_key: namespace_resource.connection.secret_key,
11771188
access_mode: namespace_resource.access_mode,
11781189
aws_sts_arn: namespace_resource.connection.aws_sts_arn || undefined,
1190+
gcp_hmac_key: namespace_resource.connection.gcp_hmac_key,
11791191
};
11801192
const nsfs_info = namespace_resource.nsfs_config && {
11811193
fs_root_path: namespace_resource.nsfs_config.fs_root_path,

src/server/system_services/schemas/account_schema.js

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ module.exports = {
7070
access_key: { $ref: 'common_api#/definitions/access_key' },
7171
secret_key: { $ref: 'common_api#/definitions/secret_key' },
7272
azure_log_access_keys: { $ref: 'common_api#/definitions/azure_log_access_keys' },
73+
gcp_hmac_key: { $ref: 'common_api#/definitions/gcp_hmac_key' },
7374
aws_sts_arn: {
7475
type: 'string'
7576
},

src/server/system_services/schemas/namespace_resource_schema.js

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ module.exports = {
5353
access_key: { $ref: 'common_api#/definitions/access_key' },
5454
secret_key: { $ref: 'common_api#/definitions/secret_key' },
5555
azure_log_access_keys: { $ref: 'common_api#/definitions/azure_log_access_keys' },
56+
gcp_hmac_key: { $ref: 'common_api#/definitions/gcp_hmac_key' },
5657
cp_code: {
5758
type: 'string'
5859
}

0 commit comments

Comments
 (0)