mirror of
https://github.com/minio/minio.git
synced 2025-01-11 06:53:22 -05:00
fix: indicate PutBucketEncryption as a valid policy action (#9009)
This commit is contained in:
parent
1b427ddb69
commit
16a6e68d7b
@ -1171,6 +1171,9 @@ var iamAccountOtherAccessActions = iampolicy.NewActionSet(
|
|||||||
iampolicy.PutBucketPolicyAction,
|
iampolicy.PutBucketPolicyAction,
|
||||||
iampolicy.DeleteBucketPolicyAction,
|
iampolicy.DeleteBucketPolicyAction,
|
||||||
iampolicy.GetBucketPolicyAction,
|
iampolicy.GetBucketPolicyAction,
|
||||||
|
|
||||||
|
iampolicy.PutBucketEncryptionAction,
|
||||||
|
iampolicy.GetBucketEncryptionAction,
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetAccountAccess iterates over all policies documents associated to a user
|
// GetAccountAccess iterates over all policies documents associated to a user
|
||||||
|
@ -120,58 +120,71 @@ const (
|
|||||||
GetBucketEncryptionAction = "s3:GetEncryptionConfiguration"
|
GetBucketEncryptionAction = "s3:GetEncryptionConfiguration"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// List of all supported object actions.
|
||||||
|
var supportedObjectActions = map[Action]struct{}{
|
||||||
|
AbortMultipartUploadAction: {},
|
||||||
|
DeleteObjectAction: {},
|
||||||
|
GetObjectAction: {},
|
||||||
|
ListMultipartUploadPartsAction: {},
|
||||||
|
PutObjectAction: {},
|
||||||
|
BypassGovernanceModeAction: {},
|
||||||
|
BypassGovernanceRetentionAction: {},
|
||||||
|
PutObjectRetentionAction: {},
|
||||||
|
GetObjectRetentionAction: {},
|
||||||
|
PutObjectLegalHoldAction: {},
|
||||||
|
GetObjectLegalHoldAction: {},
|
||||||
|
GetObjectTaggingAction: {},
|
||||||
|
PutObjectTaggingAction: {},
|
||||||
|
DeleteObjectTaggingAction: {},
|
||||||
|
}
|
||||||
|
|
||||||
// isObjectAction - returns whether action is object type or not.
|
// isObjectAction - returns whether action is object type or not.
|
||||||
func (action Action) isObjectAction() bool {
|
func (action Action) isObjectAction() bool {
|
||||||
switch action {
|
_, ok := supportedObjectActions[action]
|
||||||
case AbortMultipartUploadAction, DeleteObjectAction, GetObjectAction:
|
return ok
|
||||||
fallthrough
|
}
|
||||||
case ListMultipartUploadPartsAction, PutObjectAction:
|
|
||||||
return true
|
|
||||||
case PutObjectRetentionAction, GetObjectRetentionAction:
|
|
||||||
return true
|
|
||||||
case PutObjectLegalHoldAction, GetObjectLegalHoldAction:
|
|
||||||
return true
|
|
||||||
case BypassGovernanceModeAction, BypassGovernanceRetentionAction:
|
|
||||||
return true
|
|
||||||
case GetObjectTaggingAction, PutObjectTaggingAction, DeleteObjectTaggingAction:
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
// List of all supported actions.
|
||||||
|
var supportedActions = map[Action]struct{}{
|
||||||
|
AbortMultipartUploadAction: {},
|
||||||
|
CreateBucketAction: {},
|
||||||
|
DeleteBucketAction: {},
|
||||||
|
DeleteBucketPolicyAction: {},
|
||||||
|
DeleteObjectAction: {},
|
||||||
|
GetBucketLocationAction: {},
|
||||||
|
GetBucketNotificationAction: {},
|
||||||
|
GetBucketPolicyAction: {},
|
||||||
|
GetObjectAction: {},
|
||||||
|
HeadBucketAction: {},
|
||||||
|
ListAllMyBucketsAction: {},
|
||||||
|
ListBucketAction: {},
|
||||||
|
ListBucketMultipartUploadsAction: {},
|
||||||
|
ListenBucketNotificationAction: {},
|
||||||
|
ListMultipartUploadPartsAction: {},
|
||||||
|
PutBucketNotificationAction: {},
|
||||||
|
PutBucketPolicyAction: {},
|
||||||
|
PutObjectAction: {},
|
||||||
|
GetBucketLifecycleAction: {},
|
||||||
|
PutBucketLifecycleAction: {},
|
||||||
|
PutObjectRetentionAction: {},
|
||||||
|
GetObjectRetentionAction: {},
|
||||||
|
GetObjectLegalHoldAction: {},
|
||||||
|
PutObjectLegalHoldAction: {},
|
||||||
|
PutBucketObjectLockConfigurationAction: {},
|
||||||
|
GetBucketObjectLockConfigurationAction: {},
|
||||||
|
BypassGovernanceModeAction: {},
|
||||||
|
BypassGovernanceRetentionAction: {},
|
||||||
|
GetObjectTaggingAction: {},
|
||||||
|
PutObjectTaggingAction: {},
|
||||||
|
DeleteObjectTaggingAction: {},
|
||||||
|
PutBucketEncryptionAction: {},
|
||||||
|
GetBucketEncryptionAction: {},
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsValid - checks if action is valid or not.
|
// IsValid - checks if action is valid or not.
|
||||||
func (action Action) IsValid() bool {
|
func (action Action) IsValid() bool {
|
||||||
switch action {
|
_, ok := supportedActions[action]
|
||||||
case AbortMultipartUploadAction, CreateBucketAction, DeleteBucketAction:
|
return ok
|
||||||
fallthrough
|
|
||||||
case DeleteBucketPolicyAction, DeleteObjectAction, GetBucketLocationAction:
|
|
||||||
fallthrough
|
|
||||||
case GetBucketNotificationAction, GetBucketPolicyAction, GetObjectAction:
|
|
||||||
fallthrough
|
|
||||||
case HeadBucketAction, ListAllMyBucketsAction, ListBucketAction:
|
|
||||||
fallthrough
|
|
||||||
case ListBucketMultipartUploadsAction, ListenBucketNotificationAction:
|
|
||||||
fallthrough
|
|
||||||
case ListMultipartUploadPartsAction, PutBucketNotificationAction:
|
|
||||||
fallthrough
|
|
||||||
case PutBucketPolicyAction, PutObjectAction:
|
|
||||||
fallthrough
|
|
||||||
case PutBucketLifecycleAction, GetBucketLifecycleAction:
|
|
||||||
return true
|
|
||||||
case BypassGovernanceModeAction, BypassGovernanceRetentionAction:
|
|
||||||
return true
|
|
||||||
case PutObjectRetentionAction, GetObjectRetentionAction:
|
|
||||||
return true
|
|
||||||
case PutObjectLegalHoldAction, GetObjectLegalHoldAction:
|
|
||||||
return true
|
|
||||||
case PutBucketObjectLockConfigurationAction, GetBucketObjectLockConfigurationAction:
|
|
||||||
return true
|
|
||||||
case GetObjectTaggingAction, PutObjectTaggingAction, DeleteObjectTaggingAction:
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarshalJSON - encodes Action to JSON data.
|
// MarshalJSON - encodes Action to JSON data.
|
||||||
|
@ -123,6 +123,12 @@ const (
|
|||||||
// DeleteObjectTaggingAction - Delete Object Tags API action
|
// DeleteObjectTaggingAction - Delete Object Tags API action
|
||||||
DeleteObjectTaggingAction = "s3:DeleteObjectTagging"
|
DeleteObjectTaggingAction = "s3:DeleteObjectTagging"
|
||||||
|
|
||||||
|
// PutBucketEncryptionAction - PutBucketEncryption REST API action
|
||||||
|
PutBucketEncryptionAction = "s3:PutEncryptionConfiguration"
|
||||||
|
|
||||||
|
// GetBucketEncryptionAction - GetBucketEncryption REST API action
|
||||||
|
GetBucketEncryptionAction = "s3:GetEncryptionConfiguration"
|
||||||
|
|
||||||
// AllActions - all API actions
|
// AllActions - all API actions
|
||||||
AllActions = "s3:*"
|
AllActions = "s3:*"
|
||||||
)
|
)
|
||||||
@ -161,26 +167,33 @@ var supportedActions = map[Action]struct{}{
|
|||||||
GetObjectTaggingAction: {},
|
GetObjectTaggingAction: {},
|
||||||
PutObjectTaggingAction: {},
|
PutObjectTaggingAction: {},
|
||||||
DeleteObjectTaggingAction: {},
|
DeleteObjectTaggingAction: {},
|
||||||
|
PutBucketEncryptionAction: {},
|
||||||
|
GetBucketEncryptionAction: {},
|
||||||
|
}
|
||||||
|
|
||||||
|
// List of all supported object actions.
|
||||||
|
var supportedObjectActions = map[Action]struct{}{
|
||||||
|
AllActions: {},
|
||||||
|
AbortMultipartUploadAction: {},
|
||||||
|
DeleteObjectAction: {},
|
||||||
|
GetObjectAction: {},
|
||||||
|
ListMultipartUploadPartsAction: {},
|
||||||
|
PutObjectAction: {},
|
||||||
|
BypassGovernanceModeAction: {},
|
||||||
|
BypassGovernanceRetentionAction: {},
|
||||||
|
PutObjectRetentionAction: {},
|
||||||
|
GetObjectRetentionAction: {},
|
||||||
|
PutObjectLegalHoldAction: {},
|
||||||
|
GetObjectLegalHoldAction: {},
|
||||||
|
GetObjectTaggingAction: {},
|
||||||
|
PutObjectTaggingAction: {},
|
||||||
|
DeleteObjectTaggingAction: {},
|
||||||
}
|
}
|
||||||
|
|
||||||
// isObjectAction - returns whether action is object type or not.
|
// isObjectAction - returns whether action is object type or not.
|
||||||
func (action Action) isObjectAction() bool {
|
func (action Action) isObjectAction() bool {
|
||||||
switch action {
|
_, ok := supportedObjectActions[action]
|
||||||
case AbortMultipartUploadAction, DeleteObjectAction, GetObjectAction:
|
return ok
|
||||||
fallthrough
|
|
||||||
case ListMultipartUploadPartsAction, PutObjectAction, AllActions:
|
|
||||||
return true
|
|
||||||
case BypassGovernanceModeAction, BypassGovernanceRetentionAction:
|
|
||||||
return true
|
|
||||||
case PutObjectRetentionAction, GetObjectRetentionAction:
|
|
||||||
return true
|
|
||||||
case PutObjectLegalHoldAction, GetObjectLegalHoldAction:
|
|
||||||
return true
|
|
||||||
case GetObjectTaggingAction, PutObjectTaggingAction, DeleteObjectTaggingAction:
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Match - matches object name with resource pattern.
|
// Match - matches object name with resource pattern.
|
||||||
|
Loading…
Reference in New Issue
Block a user