From 963c8f1221cd5c270485264bd012892ce5cb5fed Mon Sep 17 00:00:00 2001 From: Alex <33497058+bexsoft@users.noreply.github.com> Date: Thu, 4 Apr 2024 23:41:20 -0600 Subject: [PATCH] Added missing permissions validation to rewind button (#3282) Signed-off-by: Benjamin Perez --- .github/workflows/vulncheck.yaml | 2 +- go.mod | 2 +- go.sum | 4 +- .../Objects/ListObjects/ListObjects.tsx | 30 +++++-- web-app/tests/permissions-8/rewind.ts | 89 ++++++++++++++++++- web-app/tests/policies/rewind-allowed.json | 36 ++++++++ .../tests/policies/rewind-not-allowed.json | 36 ++++++++ web-app/tests/scripts/cleanup-env.sh | 4 + web-app/tests/scripts/common.sh | 6 ++ web-app/tests/utils/roles.ts | 22 +++++ 10 files changed, 217 insertions(+), 14 deletions(-) create mode 100644 web-app/tests/policies/rewind-allowed.json create mode 100644 web-app/tests/policies/rewind-not-allowed.json diff --git a/.github/workflows/vulncheck.yaml b/.github/workflows/vulncheck.yaml index 057b51622..55e611ac8 100644 --- a/.github/workflows/vulncheck.yaml +++ b/.github/workflows/vulncheck.yaml @@ -22,7 +22,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: 1.21.8 + go-version: 1.21.9 check-latest: true - name: Get official govulncheck run: go install golang.org/x/vuln/cmd/govulncheck@latest diff --git a/go.mod b/go.mod index 632ec91f4..43d1fc87f 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/tidwall/gjson v1.17.1 github.com/unrolled/secure v1.14.0 golang.org/x/crypto v0.21.0 - golang.org/x/net v0.22.0 + golang.org/x/net v0.23.0 golang.org/x/oauth2 v0.18.0 // Added to include security fix for // https://github.com/golang/go/issues/56152 diff --git a/go.sum b/go.sum index 3eedebb2d..c83bdfcba 100644 --- a/go.sum +++ b/go.sum @@ -352,8 +352,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx index 610a52efe..151ea32fc 100644 --- a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx +++ b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx @@ -26,6 +26,7 @@ import get from "lodash/get"; import { AccessRuleIcon, ActionsList, + Badge, Box, BucketsIcon, Button, @@ -39,7 +40,6 @@ import { RefreshIcon, ScreenTitle, ShareIcon, - Badge, } from "mds"; import { api } from "api"; import { errorToHandler } from "api/errors"; @@ -274,6 +274,11 @@ const ListObjects = () => { [pathAsResourceInPolicy, ...sessionGrantWildCards], [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS], ); + const canRewind = hasPermission(bucketName, [ + IAM_SCOPES.S3_GET_OBJECT, + IAM_SCOPES.S3_GET_ACTIONS, + IAM_SCOPES.S3_GET_BUCKET_VERSIONING, + ]); const canDelete = hasPermission( [pathAsResourceInPolicy, ...sessionGrantWildCards], [IAM_SCOPES.S3_DELETE_OBJECT], @@ -1057,7 +1062,20 @@ const ListObjects = () => { actions={ {!anonymousMode && ( - +