Skip to content

Commit 5b8ea19

Browse files
authored
Add support for ArnEquals (#13)
1 parent 4f110e3 commit 5b8ea19

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

queries/functions.sql

+26-10
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,32 @@ $$ LANGUAGE sql STABLE STRICT;
4949
-- marked stable because it calls a stable function
5050
CREATE OR REPLACE FUNCTION condition_allowed_accounts(condition JSONB)
5151
RETURNS Table(account_id TEXT) AS $$
52-
SELECT COALESCE(
53-
(SELECT
54-
A.account_id
55-
FROM
56-
jsonb_each(condition -> 'StringEquals') AS SE
57-
CROSS JOIN LATERAL unpack_maybe_array(SE.value) AS ConditionValue
58-
CROSS JOIN LATERAL extract_account_ids(ConditionValue.value #>> '{}') AS A
59-
WHERE
60-
lower(SE.key) IN ('kms:calleraccount', 'aws:sourceowner', 'aws:principalaccount', 'aws:principalarn', 'aws:sourceaccount', 'aws:sourcearn'))
61-
, '*')
52+
SELECT
53+
COALESCE(
54+
(
55+
SELECT
56+
A.account_id
57+
FROM
58+
(
59+
SELECT
60+
SE.*
61+
FROM
62+
jsonb_each(condition -> 'StringEquals') AS SE
63+
WHERE
64+
lower(SE.key) IN ('kms:calleraccount', 'aws:sourceowner', 'aws:principalaccount', 'aws:principalarn', 'aws:sourceaccount', 'aws:sourcearn')
65+
UNION
66+
SELECT
67+
AE.*
68+
FROM
69+
jsonb_each(condition -> 'ArnEquals') AS AE
70+
WHERE
71+
lower(AE.key) IN ('aws:principalarn', 'aws:sourcearn')
72+
) AS Identifier
73+
CROSS JOIN LATERAL unpack_maybe_array(Identifier.value) AS ConditionValue
74+
CROSS JOIN LATERAL extract_account_ids(ConditionValue.value #>> '{}') AS A
75+
),
76+
'*'
77+
)
6278
$$ LANGUAGE sql STABLE STRICT;
6379

6480
CREATE OR REPLACE FUNCTION allowed_account_ids(S JSONB)

0 commit comments

Comments
 (0)