sql/ci.sql (83 lines of code) (raw):
-- This file is run in CI.
-- Switch to the `repocop` user and test access to `view_repo_ownership`
SET ROLE repocop;
SELECT * FROM view_repo_ownership LIMIT 1;
SELECT * FROM obligatron_results LIMIT 1;
-- Obligatron should have read access to all tables, and write access to `obligatron_results`
SET ROLE obligatron;
SELECT * FROM github_repositories LIMIT 1;
INSERT INTO obligatron_results
(
date
, obligation_name
, resource
, reason
, contacts
)
VALUES (
'2020-01-01'
, 'OBLIGATION'
, 'guardian/myrepo'
, 'vulnerabilities'
, '{}'
);
DELETE FROM obligatron_results
WHERE obligation_name = 'OBLIGATION';
-- Switch to the `cloudbuster` user and test access to the tables used in the cloudbuster app
SET ROLE cloudbuster;
-- It should be able to read from this table
SELECT * FROM aws_securityhub_findings LIMIT 1;
INSERT INTO cloudbuster_fsbp_vulnerabilities
(
arn
, aws_account_id
, aws_region
, control_id
, severity
, title
, within_sla
)
VALUES (
'arn:aws:securityhub:eu-west-1:123456789012:product/aws/securityhub/finding/12345678901234567890123456789012'
, '123456789012'
, 'eu-west-1'
, 'control-id'
, 'CRITICAL'
, 'title'
, TRUE
);
DELETE FROM cloudbuster_fsbp_vulnerabilities
WHERE arn = 'arn:aws:securityhub:eu-west-1:123456789012:product/aws/securityhub/finding/12345678901234567890123456789012';
-- Switch to the `dataaudit` user and test access to the tables/views used in the data-audit app
SET ROLE dataaudit;
-- It should be able to read from these tables
SELECT * FROM aws_s3_buckets LIMIT 1;
SELECT * FROM aws_lambda_functions LIMIT 1;
SELECT * FROM aws_accounts LIMIT 1;
-- It should be able to read/write from the table audit_results
INSERT INTO audit_results (
evaluated_on
, name
, success
, cloudquery_total
, vendor_total
) VALUES (
NOW()
, 'test'
, TRUE
, 1
, 1
);
SELECT * FROM audit_results LIMIT 1;
DELETE FROM audit_results
WHERE name = 'test';
-- The user github_actions_usage...
SET ROLE github_actions_usage;
-- ...should be able to read from these tables
SELECT * FROM github_workflows LIMIT 1;
SELECT * FROM github_repositories LIMIT 1;
-- ...and read/write to the table guardian_github_actions_usage
INSERT INTO guardian_github_actions_usage (
evaluated_on
, full_name
, workflow_path
, workflow_uses
) VALUES (
NOW()
, 'guardian/service-catalogue'
, '.github/workflows/ci.yml'
, ARRAY['guardian/actions-riffraff@v4']
);
SELECT * FROM guardian_github_actions_usage LIMIT 1;
DELETE FROM guardian_github_actions_usage
WHERE full_name = 'guardian/service-catalogue';
-- Switch back to the original user
RESET role;