Skip to content

Commit 6d49dac

Browse files
committed
SLK-103546 - Add Token Authentication Fallback Support
- Add X-Tokens-Signature header to all API key-authenticated requests - Calculate tokens signature using existing get_signature function with /v2/tokens endpoint - Update trigger-aws.py: add header to get_cspm_key_id(), trigger_discovery(), and update_credentials() functions - Update create_cspm_key.py: add header to get_cspm_key_id() and create_cspm_key() functions - Update generate_external_id.py: add header to generate_external_id() function - Enable backend fallback to Bearer token authentication when API key authentication fails
1 parent 5699472 commit 6d49dac

3 files changed

Lines changed: 14 additions & 4 deletions

File tree

modules/single/modules/lambda/functions/create_cspm_key.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ def http_request(url, headers, method, body=None):
5757
def get_cspm_key_id(aqua_api_key, aqua_secret, cspm_url, role_arn):
5858
tstmp = str(int(time.time() * 1000))
5959
sig = get_signature(aqua_secret, tstmp, "/v2/keys", "GET", '')
60-
headers = {"X-API-Key": aqua_api_key, "X-Signature": sig, "X-Timestamp": tstmp}
60+
tokens_signature = get_signature(aqua_secret, tstmp, "/v2/tokens", "POST", '{"validity":1,"allowed_endpoints":["ANY"]}')
61+
headers = {"X-API-Key": aqua_api_key, "X-Signature": sig, "X-Tokens-Signature": tokens_signature, "X-Timestamp": tstmp}
6162

6263
response = http_request(cspm_url + "/v2/keys", headers, "GET")
6364
json_object = json.loads(response.data)
@@ -87,9 +88,11 @@ def create_cspm_key(cspm_url, aqua_api_key, aqua_secret, role_arn, external_id,
8788
tstmp = str(int(time.time() * 1000))
8889
jsonbody = json.dumps(body, separators=(',', ':'))
8990
sig = get_signature(aqua_secret, tstmp, "/v2/keys", "POST", jsonbody)
91+
tokens_signature = get_signature(aqua_secret, tstmp, "/v2/tokens", "POST", '{"validity":1,"allowed_endpoints":["ANY"]}')
9092
headers = {
9193
"X-API-Key": aqua_api_key,
9294
"X-Signature": sig,
95+
"X-Tokens-Signature": tokens_signature,
9396
"X-Timestamp": tstmp
9497
}
9598

modules/single/modules/lambda/functions/generate_external_id.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ def generate_external_id(cspm_url, ac_url, aqua_api_key, aqua_secret, aws_accoun
5353
tstmp = str(int(time.time() * 1000))
5454
method = "POST"
5555
sig = get_signature(aqua_secret, tstmp, '/v2/generatedids', method, '')
56-
headers = {"X-API-Key": aqua_api_key, "X-Signature": sig, "X-Timestamp": tstmp}
56+
tokens_signature = get_signature(aqua_secret, tstmp, "/v2/tokens", "POST", '{"validity":1,"allowed_endpoints":["ANY"]}')
57+
headers = {"X-API-Key": aqua_api_key, "X-Signature": sig, "X-Tokens-Signature": tokens_signature, "X-Timestamp": tstmp}
5758

5859
response = http_request(u, headers, method)
5960
if response.get('status', 0) != 200 and response.get('status', 0) != 201 or not response.get('data'):

modules/single/modules/trigger/trigger-aws.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,11 @@ def get_cspm_key_id(aqua_api_key, aqua_secret, cspm_url, role_arn):
7272
"""Fetch the CSPM key ID for the given IAM role ARN"""
7373

7474
sig = get_signature(aqua_secret, tstmp, "/v2/keys", "GET", '')
75+
tokens_signature = get_signature(aqua_secret, tstmp, "/v2/tokens", "POST", '{"validity":1,"allowed_endpoints":["ANY"]}')
7576
headers = {
7677
"X-API-Key": aqua_api_key,
7778
"X-Signature": sig,
79+
"X-Tokens-Signature": tokens_signature,
7880
"X-Timestamp": tstmp
7981
}
8082

@@ -130,10 +132,12 @@ def trigger_discovery():
130132
)
131133

132134
cspm_sig = get_signature(aqua_secret, tstmp, "/v2/keys", "POST", body_cspm)
135+
tokens_signature = get_signature(aqua_secret, tstmp, "/v2/tokens", "POST", '{"validity":1,"allowed_endpoints":["ANY"]}')
133136
headers = {
134137
"X-API-Key": aqua_api_key,
135138
"X-Authenticate-Api-Key-Signature": sig,
136139
"X-Register-New-Cspm-Signature": cspm_sig,
140+
"X-Tokens-Signature": tokens_signature,
137141
"X-Timestamp": tstmp
138142
}
139143

@@ -154,8 +158,9 @@ def update_credentials():
154158
cspm_key_id = get_cspm_key_id(aqua_api_key, aqua_secret, cspm_url, cspm_role_arn)
155159

156160
cspm_sig = get_signature(aqua_secret, tstmp, f"/v2/keys/{cspm_key_id}", "PUT", cspm_body)
161+
tokens_signature = get_signature(aqua_secret, tstmp, "/v2/tokens", "POST", '{"validity":1,"allowed_endpoints":["ANY"]}')
157162

158-
cspm_headers = {"X-API-Key": aqua_api_key, "X-Signature": cspm_sig, "X-Timestamp": tstmp}
163+
cspm_headers = {"X-API-Key": aqua_api_key, "X-Signature": cspm_sig, "X-Tokens-Signature": tokens_signature, "X-Timestamp": tstmp}
159164

160165
cspm_response = http_request(cspm_url + f"/v2/keys/{cspm_key_id}", cspm_headers, "PUT", cspm_body)
161166

@@ -170,8 +175,9 @@ def update_credentials():
170175
})
171176

172177
ac_sig = get_signature(aqua_secret, tstmp, "/v2/internal_apikeys", method="GET")
178+
tokens_signature = get_signature(aqua_secret, tstmp, "/v2/tokens", "POST", '{"validity":1,"allowed_endpoints":["ANY"]}')
173179

174-
ac_headers = {"X-API-Key": aqua_api_key, "X-Authenticate-Api-Key-Signature": ac_sig, "X-Timestamp": tstmp}
180+
ac_headers = {"X-API-Key": aqua_api_key, "X-Authenticate-Api-Key-Signature": ac_sig, "X-Tokens-Signature": tokens_signature, "X-Timestamp": tstmp}
175181

176182
ac_response = http_request(ac_url + f"/discover/update-credentials/{cloud}", ac_headers, "PUT", ac_body)
177183

0 commit comments

Comments
 (0)