Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/kms/wrapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ function getClientForKey(key, log) {
// if type was extracted, it is a scality arnPrefix, it needs validation
// might throw if arn malformed or backend not available
// for any request (PUT or GET)
const error = validateKeyDetail(detail, availableBackends);
const error = validateKeyDetail(detail, availableBackends, key);
if (error) {
log.error('KMS key arn is invalid', { key, detail, availableBackends });
return { error };
Expand Down Expand Up @@ -266,7 +266,7 @@ class KMS {
// otherwise prepend the current KMS client arnPrefix
if (isScalityKmsArn(configuredMasterKeyId)) {
const detail = extractDetailFromArn(configuredMasterKeyId);
const error = validateKeyDetail(detail, availableBackends);
const error = validateKeyDetail(detail, availableBackends, configuredMasterKeyId);
if (error) {
return cb(error);
Comment thread
dvasilas marked this conversation as resolved.
Resolved
}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"@opentelemetry/instrumentation-http": "~0.222.0",
"@opentelemetry/instrumentation-ioredis": "~0.70.0",
"@opentelemetry/instrumentation-mongodb": "~0.75.0",
"@scality/arsenal": "^8.6.0",
"@scality/arsenal": "^8.6.1",
"@scality/bucketclient": "scality/bucketclient#8.3.0",
"@scality/cloudserverclient": "1.0.13",
"@scality/scubaclient": "1.2.2",
Expand Down
10 changes: 8 additions & 2 deletions tests/functional/kmip/serverside_encryption.js
Original file line number Diff line number Diff line change
Expand Up @@ -412,10 +412,16 @@ describe('KMIP backed server-side encryption with other KMSs configured', () =>
describe('with a key of a KMS that is not configured', () => {
const keyArn = `${makeScalityArnPrefix(KmsType.external, KmsProtocol.kmip, 'unconfigured')}1`;

function assertRefusedNamingOnlyTheKey(err) {
assertInvalidArgument(err);
assert.strictEqual(err.message, `KMS Scality KeyArn "${keyArn}" doesn't match any configured providers`);
return true;
}

it('should refuse PutObject', () =>
assert.rejects(putObject(bucketName, objectName, keyArn), assertInvalidArgument));
assert.rejects(putObject(bucketName, objectName, keyArn), assertRefusedNamingOnlyTheKey));

it('should refuse PutBucketEncryption on a bucket without a bucket key', () =>
assert.rejects(putBucketEncryption(bucketName, keyArn), assertInvalidArgument));
assert.rejects(putBucketEncryption(bucketName, keyArn), assertRefusedNamingOnlyTheKey));
});
});
31 changes: 31 additions & 0 deletions tests/unit/encryption/kms.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,37 @@ describe('KMS unit tests', () => {
});
});

describe('with a key of a KMS that is not configured', () => {
const keyArn = 'arn:scality:kms:external:kmip:unconfigured:key/1';

function assertRefusedNamingOnlyTheKey(err) {
assert.strictEqual(err.is.InvalidArgument, true);
assert.strictEqual(
err.description,
`KMS Scality KeyArn "${keyArn}" doesn't match any configured providers`,
);
}

it('should refuse it on bucket encryption', done => {
const sseConfig = parseBucketEncryptionHeaders({
'x-amz-scal-server-side-encryption': 'aws:kms',
'x-amz-scal-server-side-encryption-aws-kms-key-id': keyArn,
});
KMS.bucketLevelEncryption(dummyBucket, sseConfig, log, err => {
assertRefusedNamingOnlyTheKey(err);
done();
});
});

it('should refuse it on object encryption', done => {
const sseInfo = { algorithm: 'aws:kms', cryptoScheme: 1, mandatory: true, masterKeyId: keyArn };
KMS.createCipherBundle(sseInfo, log, err => {
assertRefusedNamingOnlyTheKey(err);
done();
});
});
});

it(
'should not construct a sse info object if ' +
'x-amz-scal-server-side-encryption header contains invalid algorithm option',
Expand Down
15 changes: 7 additions & 8 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1305,10 +1305,10 @@
resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8"
integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==

"@scality/arsenal@^8.6.0", "@scality/arsenal@^8.6.0-0":
version "8.6.0"
resolved "https://registry.yarnpkg.com/@scality/arsenal/-/arsenal-8.6.0.tgz#7d8422893a6f498894e04509cb07f1bcb224e5ab"
integrity sha512-RxYMTZf23vd4P1lQEm/H7Jy0yIFZ+2/uFqpp7tLD4lj8iu6Lj8MsF+KxWfB3QLvwVKx9QPsMqSe06QaOPwqh4Q==
"@scality/arsenal@^8.6.0", "@scality/arsenal@^8.6.1":
version "8.6.1"
resolved "https://registry.yarnpkg.com/@scality/arsenal/-/arsenal-8.6.1.tgz#f2db3ec8184646282872850d1cce3c16870f053c"
integrity sha512-EwKYj0htAbDvDmu4h3EeIG1RwwxGCRvUixQN8NHx9bJIHS5qucQLvNCQ45BNR0q4MDIza3fyE6Xn7DF5hxBBUQ==
dependencies:
"@aws-sdk/client-kms" "^3.975.0"
"@aws-sdk/client-s3" "^3.975.0"
Expand Down Expand Up @@ -1406,7 +1406,7 @@
resolved "https://codeload.github.com/scality/utapi/tar.gz/0977b6b64d04683182da572be7f0aee524d98cf4"
dependencies:
"@aws-sdk/client-iam" "^3.975.0"
"@scality/arsenal" "^8.6.0-0"
"@scality/arsenal" "^8.6.0"
"@scality/bucketclient" scality/bucketclient#8.3.0
"@senx/warp10" "1.0.14"
async "^3.2.6"
Expand Down Expand Up @@ -4111,9 +4111,8 @@ http2-wrapper@^1.0.0-beta.5.2:
dependencies:
agentkeepalive "^4.5.0"

"httpagent@github:scality/httpagent#1.1.1", httpagent@scality/httpagent#1.1.1:
"httpagent@github:scality/httpagent#1.1.1":
version "1.1.1"
uid "7c6ef8be1cd89b56651f4a922ea5c92d7673ee2e"
resolved "https://codeload.github.com/scality/httpagent/tar.gz/7c6ef8be1cd89b56651f4a922ea5c92d7673ee2e"
dependencies:
agentkeepalive "^4.6.0"
Expand Down Expand Up @@ -7180,7 +7179,7 @@ webidl-conversions@^7.0.0:
fast-safe-stringify "^2.1.1"
safe-json-stringify "^1.2.0"

werelogs@scality/werelogs#8.2.5, "werelogs@scality/werelogs#semver:^8.2.4":
"werelogs@github:scality/werelogs#8.2.5", werelogs@scality/werelogs#8.2.5, "werelogs@scality/werelogs#semver:^8.2.4":
version "8.2.5"
resolved "https://codeload.github.com/scality/werelogs/tar.gz/41188826d661227f98ebaaeda7df5e5862809bc7"
dependencies:
Expand Down
Loading