Skip to content

Commit 4a21e32

Browse files
author
your-github-username
committed
Fix QuickSight import permissions for DataSources and DataSets
- Add wildcard expansion call in import_dashboard() - Separate permissions for each asset type (Dashboard/DataSource/DataSet) - Use asset-specific actions instead of reusing Dashboard actions - Fix account ID wildcard in manifest.yaml to use parameter substitution - Resolves missing Principals/Actions errors during import
1 parent 0eb636c commit 4a21e32

File tree

2 files changed

+54
-12
lines changed

2 files changed

+54
-12
lines changed

experimental/SMUS-CICD-pipeline-cli/examples/analytic-workflow/dashboard-glue-quick/manifest.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ stages:
7575
assets:
7676
- name: TotalDeathByCountry
7777
owners:
78-
- arn:aws:quicksight:${TEST_DOMAIN_REGION:us-east-1}:*:user/default/Admin/*
78+
- arn:aws:quicksight:${TEST_DOMAIN_REGION:us-east-1}:${AWS_ACCOUNT_ID}:user/default/Admin/*
7979
viewers:
80-
- arn:aws:quicksight:${TEST_DOMAIN_REGION:us-east-1}:*:user/default/Admin/*
80+
- arn:aws:quicksight:${TEST_DOMAIN_REGION:us-east-1}:${AWS_ACCOUNT_ID}:user/default/Admin/*
8181
overrideParameters:
8282
ResourceIdOverrideConfiguration:
8383
PrefixForAllResources: deployed-{stage.name}-covid-

experimental/SMUS-CICD-pipeline-cli/src/smus_cicd/helpers/quicksight.py

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -209,27 +209,69 @@ def import_dashboard(
209209
job_id = f"import-{timestamp}"
210210

211211
# Build permissions for OverridePermissions (applies to all asset types)
212-
asset_permissions = {}
212+
dashboard_permissions = {}
213+
datasource_permissions = {}
214+
dataset_permissions = {}
215+
213216
if permissions:
214217
principals = []
215-
actions = []
218+
dashboard_actions = []
216219
for perm in permissions:
217-
principals.append(perm["principal"])
218-
actions.extend(perm["actions"])
219-
# Remove duplicates from actions
220-
actions = list(set(actions))
221-
asset_permissions = {"Principals": principals, "Actions": actions}
220+
# Expand wildcards in principal ARNs
221+
expanded = expand_principal_wildcards(
222+
perm["principal"], aws_account_id, region
223+
)
224+
principals.extend(expanded)
225+
dashboard_actions.extend(perm["actions"])
226+
227+
# Remove duplicates
228+
principals = list(set(principals))
229+
dashboard_actions = list(set(dashboard_actions))
230+
231+
# Build dashboard permissions
232+
dashboard_permissions = {"Principals": principals, "Actions": dashboard_actions}
233+
234+
# Use standard read/write permissions for DataSources and DataSets
235+
datasource_permissions = {
236+
"Principals": principals,
237+
"Actions": [
238+
"quicksight:DescribeDataSource",
239+
"quicksight:DescribeDataSourcePermissions",
240+
"quicksight:PassDataSource",
241+
"quicksight:UpdateDataSource",
242+
"quicksight:DeleteDataSource",
243+
"quicksight:UpdateDataSourcePermissions"
244+
]
245+
}
246+
247+
dataset_permissions = {
248+
"Principals": principals,
249+
"Actions": [
250+
"quicksight:DescribeDataSet",
251+
"quicksight:DescribeDataSetPermissions",
252+
"quicksight:PassDataSet",
253+
"quicksight:DescribeIngestion",
254+
"quicksight:ListIngestions",
255+
"quicksight:UpdateDataSet",
256+
"quicksight:DeleteDataSet",
257+
"quicksight:CreateIngestion",
258+
"quicksight:CancelIngestion",
259+
"quicksight:UpdateDataSetPermissions"
260+
]
261+
}
222262

223263
import_params = {
224264
"AwsAccountId": aws_account_id,
225265
"AssetBundleImportJobId": job_id,
226266
"AssetBundleImportSource": {"Body": _download_bundle(bundle_url)},
227267
"FailureAction": "ROLLBACK",
228268
"OverridePermissions": {
229-
"DataSources": [{"DataSourceIds": ["*"], "Permissions": asset_permissions}],
230-
"DataSets": [{"DataSetIds": ["*"], "Permissions": asset_permissions}],
269+
"DataSources": [
270+
{"DataSourceIds": ["*"], "Permissions": datasource_permissions}
271+
],
272+
"DataSets": [{"DataSetIds": ["*"], "Permissions": dataset_permissions}],
231273
"Dashboards": [
232-
{"DashboardIds": ["*"], "Permissions": asset_permissions}
274+
{"DashboardIds": ["*"], "Permissions": dashboard_permissions}
233275
],
234276
},
235277
}

0 commit comments

Comments
 (0)