Skip to content

Commit a53b569

Browse files
jinapurapuJillian Inapurapu
andauthored
Add "s3:*Bucket" permission to enable Delete, Create Bucket UI (#2401)
Co-authored-by: Jillian Inapurapu <[email protected]>
1 parent bcbebda commit a53b569

File tree

5 files changed

+29
-14
lines changed

5 files changed

+29
-14
lines changed

portal-ui/src/common/SecureComponent/permissions.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const IAM_ROLES = {
2222
};
2323

2424
export const IAM_SCOPES = {
25+
S3_STAR_BUCKET: "s3:*Bucket",
2526
S3_LIST_BUCKET: "s3:ListBucket",
2627
S3_GET_BUCKET_POLICY: "s3:GetBucketPolicy",
2728
S3_PUT_BUCKET_POLICY: "s3:PutBucketPolicy",
@@ -281,6 +282,7 @@ export const IAM_PERMISSIONS = {
281282
IAM_SCOPES.ADMIN_LIST_USER_POLICIES,
282283
IAM_SCOPES.ADMIN_LIST_USERS,
283284
IAM_SCOPES.ADMIN_HEAL,
285+
IAM_SCOPES.S3_STAR_BUCKET,
284286
],
285287
[IAM_ROLES.BUCKET_LIFECYCLE]: [
286288
IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,
@@ -526,3 +528,14 @@ export const listGroupPermissions = [
526528
IAM_SCOPES.ADMIN_LIST_GROUPS,
527529
IAM_SCOPES.ADMIN_GET_GROUP,
528530
];
531+
532+
export const deleteBucketPermissions = [
533+
IAM_SCOPES.S3_DELETE_BUCKET,
534+
IAM_SCOPES.S3_FORCE_DELETE_BUCKET,
535+
IAM_SCOPES.S3_STAR_BUCKET,
536+
];
537+
538+
export const browseBucketPermissions = [
539+
IAM_SCOPES.S3_LIST_BUCKET,
540+
IAM_SCOPES.S3_STAR_BUCKET,
541+
];

portal-ui/src/screens/Console/Buckets/BucketDetails/BrowserHandler.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ const BrowserHandler = () => {
110110
IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,
111111
IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,
112112
IAM_SCOPES.S3_DELETE_BUCKET_POLICY,
113+
IAM_SCOPES.S3_STAR_BUCKET,
113114
]);
114115

115116
const searchBar = (

portal-ui/src/screens/Console/Buckets/BucketDetails/BucketDetails.tsx

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ import {
5050
IAM_PERMISSIONS,
5151
IAM_ROLES,
5252
permissionTooltipHelper,
53+
deleteBucketPermissions,
54+
browseBucketPermissions,
5355
} from "../../../../common/SecureComponent/permissions";
5456
import PageLayout from "../../Common/Layout/PageLayout";
5557
import VerticalTabs from "../../Common/VerticalTabs/VerticalTabs";
@@ -141,11 +143,8 @@ const BucketDetails = ({ classes }: IBucketDetailsProps) => {
141143
selTab = selTab ? selTab : "summary";
142144

143145
const [activeTab, setActiveTab] = useState(selTab);
144-
const canDelete = hasPermission(bucketName, [
145-
IAM_SCOPES.S3_DELETE_BUCKET,
146-
IAM_SCOPES.S3_FORCE_DELETE_BUCKET,
147-
]);
148-
const canBrowse = hasPermission(bucketName, [IAM_SCOPES.S3_LIST_BUCKET]);
146+
const canDelete = hasPermission(bucketName, deleteBucketPermissions);
147+
const canBrowse = hasPermission(bucketName, browseBucketPermissions);
149148

150149
useEffect(() => {
151150
setActiveTab(selTab);
@@ -273,10 +272,7 @@ const BucketDetails = ({ classes }: IBucketDetailsProps) => {
273272
actions={
274273
<Fragment>
275274
<SecureComponent
276-
scopes={[
277-
IAM_SCOPES.S3_DELETE_BUCKET,
278-
IAM_SCOPES.S3_FORCE_DELETE_BUCKET,
279-
]}
275+
scopes={deleteBucketPermissions}
280276
resource={bucketName}
281277
errorProps={{ disabled: true }}
282278
>

portal-ui/src/screens/Console/Buckets/ListBuckets/ListBuckets.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,10 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
215215
setSelectedBuckets(selectAllBuckets);
216216
};
217217

218-
const canCreateBucket = hasPermission("*", [IAM_SCOPES.S3_CREATE_BUCKET]);
218+
const canCreateBucket = hasPermission("*", [
219+
IAM_SCOPES.S3_CREATE_BUCKET,
220+
IAM_SCOPES.S3_STAR_BUCKET,
221+
]);
219222
const canListBuckets = hasPermission("*", [IAM_SCOPES.S3_LIST_BUCKET]);
220223

221224
return (
@@ -306,7 +309,7 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
306309
? "Set Lifecycle"
307310
: permissionTooltipHelper(
308311
IAM_PERMISSIONS[IAM_ROLES.BUCKET_LIFECYCLE],
309-
"configuring lifecycle for the selected buckets"
312+
"configure lifecycle for the selected buckets"
310313
)
311314
}
312315
>
@@ -353,7 +356,7 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
353356
? ""
354357
: permissionTooltipHelper(
355358
[IAM_SCOPES.S3_CREATE_BUCKET],
356-
"creating a bucket"
359+
"create a bucket"
357360
)
358361
}
359362
>
@@ -429,7 +432,10 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
429432
IAM_SCOPES.S3_LIST_BUCKET +
430433
" permission. Please contact your MinIO administrator to establish this permission."}
431434
<SecureComponent
432-
scopes={[IAM_SCOPES.S3_CREATE_BUCKET]}
435+
scopes={[
436+
IAM_SCOPES.S3_CREATE_BUCKET,
437+
IAM_SCOPES.S3_STAR_BUCKET,
438+
]}
433439
resource={CONSOLE_UI_RESOURCE}
434440
>
435441
<br />

portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/TagsModal.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,6 @@ const AddTagModal = ({
269269
key={`chip-${index}`}
270270
scopes={[IAM_SCOPES.S3_DELETE_OBJECT_TAGGING]}
271271
resource={bucketName}
272-
matchAll
273272
errorProps={{
274273
deleteIcon: null,
275274
onDelete: null,

0 commit comments

Comments
 (0)