Skip to content

Commit 54ff789

Browse files
authored
policy: add tablesReadOnly and tablesReadWrite canned policies (minio#225)
tablesReadOnly mirrors AWS AmazonS3TablesReadOnlyAccess (Get* + List*). tablesReadWrite adds data write, non-destructive table mutations, and full view CRUD on top of read-only, without DDL (no create/delete namespace or table).
1 parent a9e4676 commit 54ff789

1 file changed

Lines changed: 100 additions & 0 deletions

File tree

policy/constants.go

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,106 @@ var DefaultPolicies = []struct {
240240
},
241241
},
242242

243+
// TablesReadWrite - provides read and write access to S3 Tables data and views
244+
// but no DDL (cannot create/delete namespaces or tables). Mirrors the data
245+
// access tier of AWS AmazonS3TablesFullAccess minus administrative operations.
246+
{
247+
Name: "tablesReadWrite",
248+
Definition: Policy{
249+
Version: DefaultVersion,
250+
Statements: []Statement{
251+
{
252+
SID: ID(""),
253+
Effect: Allow,
254+
Actions: NewActionSet(
255+
// Warehouse read
256+
S3TablesGetWarehouseAction,
257+
S3TablesGetWarehouseEncryptionAction,
258+
S3TablesGetWarehouseMaintenanceConfigurationAction,
259+
S3TablesGetWarehousePolicyAction,
260+
S3TablesListWarehousesAction,
261+
// Namespace read + property updates
262+
S3TablesGetNamespaceAction,
263+
S3TablesListNamespacesAction,
264+
S3TablesUpdateNamespacePropertiesAction,
265+
// Table read + data write
266+
S3TablesGetTableAction,
267+
S3TablesListTablesAction,
268+
S3TablesGetTableDataAction,
269+
S3TablesPutTableDataAction,
270+
S3TablesGetTableEncryptionAction,
271+
S3TablesGetTableMaintenanceConfigurationAction,
272+
S3TablesGetTableMaintenanceJobStatusAction,
273+
S3TablesGetTableMetadataLocationAction,
274+
S3TablesGetTablePolicyAction,
275+
// Table mutations (non-destructive)
276+
S3TablesCreateTableAction,
277+
S3TablesUpdateTableAction,
278+
S3TablesUpdateTableMetadataLocationAction,
279+
S3TablesRenameTableAction,
280+
S3TablesRegisterTableAction,
281+
// Views full CRUD
282+
S3TablesGetViewAction,
283+
S3TablesListViewsAction,
284+
S3TablesCreateViewAction,
285+
S3TablesUpdateViewAction,
286+
S3TablesRenameViewAction,
287+
S3TablesDeleteViewAction,
288+
S3TablesRegisterViewAction,
289+
// Catalog config + metrics
290+
S3TablesGetConfigAction,
291+
S3TablesTableMetricsAction,
292+
),
293+
Resources: NewResourceSet(NewS3TablesResource("*")),
294+
Conditions: condition.NewFunctions(),
295+
},
296+
},
297+
},
298+
},
299+
300+
// TablesReadOnly - provides read-only access to S3 Tables. Mirrors
301+
// AWS AmazonS3TablesReadOnlyAccess (s3tables:Get* + s3tables:List*).
302+
{
303+
Name: "tablesReadOnly",
304+
Definition: Policy{
305+
Version: DefaultVersion,
306+
Statements: []Statement{
307+
{
308+
SID: ID(""),
309+
Effect: Allow,
310+
Actions: NewActionSet(
311+
// Warehouse read
312+
S3TablesGetWarehouseAction,
313+
S3TablesGetWarehouseEncryptionAction,
314+
S3TablesGetWarehouseMaintenanceConfigurationAction,
315+
S3TablesGetWarehousePolicyAction,
316+
S3TablesListWarehousesAction,
317+
// Namespace read
318+
S3TablesGetNamespaceAction,
319+
S3TablesListNamespacesAction,
320+
// Table read
321+
S3TablesGetTableAction,
322+
S3TablesListTablesAction,
323+
S3TablesGetTableDataAction,
324+
S3TablesGetTableEncryptionAction,
325+
S3TablesGetTableMaintenanceConfigurationAction,
326+
S3TablesGetTableMaintenanceJobStatusAction,
327+
S3TablesGetTableMetadataLocationAction,
328+
S3TablesGetTablePolicyAction,
329+
// View read
330+
S3TablesGetViewAction,
331+
S3TablesListViewsAction,
332+
// Catalog config + metrics
333+
S3TablesGetConfigAction,
334+
S3TablesTableMetricsAction,
335+
),
336+
Resources: NewResourceSet(NewS3TablesResource("*")),
337+
Conditions: condition.NewFunctions(),
338+
},
339+
},
340+
},
341+
},
342+
243343
// Admin - provides admin all-access canned policy
244344
{
245345
Name: "consoleAdmin",

0 commit comments

Comments
 (0)