Changes to the docs related to mc [RELEASE.2022-11-07T23-47-39Z](https://github.com/minio/mc/releases/tag/RELEASE.2022-11-07T23-47-39Z) - Replaces `mc replicate edit` with `mc replicate update` - Adds `mc admin idp oidc | ldap` commands - Update to `mc support inspect` format - Adds `mc admin rebalance` command - Updates mc replicate edit references throughout docs to point to mc replicate update. - Adds a rebalance pools section to the expand deployment doc. - Clarifies precedence for environment variables vs config settings. Closes #636 Closes #632
22 KiB
Access Management
minio
Table of Contents
Overview
MinIO uses Policy-Based Access Control (PBAC) to define the
authorized actions and resources to which an authenticated user has
access. Each policy describes one or more actions <minio-policy-actions>
and conditions
<minio-policy-conditions>
that outline the permissions of a
user <minio-users>
or group <minio-groups>
of
users.
MinIO PBAC is built for compatibility with AWS IAM policy syntax,
structure, and behavior. The MinIO documentation makes a best-effort to
cover IAM-specific behavior and functionality. Consider deferring to the
IAM
documentation <>
for more complete documentation on AWS
IAM-specific topics.
The mc admin policy
command supports creation and management of policies on the MinIO
deployment. See the command reference for examples of usage.
Built-In Policies
MinIO provides the following built-in policies for assigning to users <minio-users>
or
groups <minio-groups>
:
consoleAdmin
Grants complete access to all S3 and administrative API operations against all resources on the MinIO deployment. Equivalent to the following set of actions:
s3:*
admin:*
readonly
Grants read-only permissions on any object on the MinIO deployment. The GET action must apply to a specific object without requiring any listing. Equivalent to the following set of actions:
s3:GetBucketLocation
s3:GetObject
For example, this policy specifically supports GET operations on
objects at a specific path (e.g.
GET play/mybucket/object.file
), such as:
mc cp
mc stat
mc head
mc cat
The exclusion of listing permissions is intentional, as typical use cases do not intend for a "read-only" role to have complete discoverability (listing all buckets and objects) on the object storage resource.
readwrite
Grants read and write permissions for all buckets and objects on the
MinIO server. Equivalent to s3:*
.
diagnostics
Grants permission to perform diagnostic actions on the MinIO deployment. Specifically includes the following actions:
admin:ServerTrace
admin:Profiling
admin:ConsoleLog
admin:ServerInfo
admin:TopLocksInfo
admin:OBDInfo
admin:BandwidthMonitor
admin:Prometheus
writeonly
Grants write-only permissions to any namespace (bucket and path to
object) the MinIO deployment. The PUT action must apply to a
specific object location without requiring any listing. Equivalent to
the s3:PutObject
action.
Use mc admin policy set
to associate a policy to a user
or group on a MinIO deployment.
For example, consider the following table of users. Each user is
assigned a built-in policy <minio-policy-built-in>
or a
supported action <minio-policy-actions>
. The table
describes a subset of operations a client could perform if authenticated
as that user:
User | Policy | Operations |
---|---|---|
Operations |
readwrite on finance bucketreadonly on
audit bucket |
PUT and GET on
finance bucket.PUT on audit bucket |
Auditing |
readonly on audit
bucket |
GET on audit bucket |
Admin |
admin:* |
All mc admin
commands. |
Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default.
Deny
overrides Allow
MinIO follows the IAM policy evaluation rules where a
Deny
rule overrides Allow
rule on the same
action/resource. For example, if a user has an explicitly assigned
policy with an Allow
rule for an action/resource while one
of its groups has an assigned policy with a Deny
rule for
that action/resource, MinIO would apply only the Deny
rule.
For more information on IAM policy evaluation logic, see the IAM
documentation on Determining Whether a Request is Allowed or Denied Within an Account
<reference_policies_evaluation-logic.html#policy-eval-denyallow>
.
Policy Document Structure
MinIO policy documents use the same schema as AWS IAM Policy <IAM/latest/UserGuide/access.html>
documents.
The following sample document provides a template for creating custom
policies for use with a MinIO deployment. For more complete
documentation on IAM policy elements, see the IAM JSON Policy Elements Reference
<IAM/latest/UserGuide/reference_policies_elements.html>
.
{"Version" : "2012-10-17",
"Statement" : [
{"Effect" : "Allow",
"Action" : [ "s3:<ActionName>", ... ],
"Resource" : "arn:aws:s3:::*",
"Condition" : { ... }
,
}
{"Effect" : "Deny",
"Action" : [ "s3:<ActionName>", ... ],
"Resource" : "arn:aws:s3:::*",
"Condition" : { ... }
}
] }
- For the
Statement.Action
array, specify one or moresupported S3 API operations <minio-policy-actions>
. MinIO deployments supports a subset of AWS S3 API operations. - For the
Statement.Resource
key, you can replace the*
with the specific bucket to which the policy statement should apply. Using*
applies the statement to all resources on the MinIO deployment. - For the
Statement.Condition
key, you can specify one or moresupported Conditions <minio-policy-conditions>
. MinIO deployments supports a subset of AWS S3 conditions.
Supported S3 Policy Actions
MinIO policy documents support a subset of IAM S3 Action keys <list_amazons3.html#amazons3-actions-as-permissions>
.
The following actions control access to common S3 operations. The remaining subsections document actions for more advanced S3 operations:
s3:*
Selector for all MinIO S3 operations. Applying this action to a given resource allows the user to perform any S3 operation against that resource.
s3:CreateBucket
Controls access to the CreateBucket <API_CreateBucket.html>
S3 API
operation.
s3:DeleteBucket
Controls access to the DeleteBucket <API_DeleteBucket.html>
S3 API
operation.
s3:ForceDeleteBucket
Controls access to the DeleteBucket <API_DeleteBucket.html>
S3 API
operation for operations with the x-minio-force-delete
flag. Required for removing non-empty buckets.
s3:GetBucketLocation
Controls access to the GetBucketLocation
<API_GetBucketLocation.html>
S3 API operation.
s3:ListAllMyBuckets
Controls access to the ListBuckets <API_ListBuckets.html>
S3 API
operation.
s3:DeleteObject
Controls access to the DeleteObject <API_DeleteObject.html>
S3 API
operation.
s3:GetObject
Controls access to the GetObject <API_GetObject.html>
S3 API
operation.
s3:ListBucket
Controls access to the ListObjectsV2 <API_ListObjectsV2.html>
S3 API
operation.
s3:PutObject
Controls access to the PutObject <API_PutObject.html>
S3 API
operation.
s3:PutObjectTagging
Controls access to the PutObjectTagging <API_PutObjectTagging.html>
S3 API operation.
s3:GetObjectTagging
Controls access to the GetObjectTagging <API_GetObjectTagging.html>
S3 API operation.
Bucket Configuration
s3:GetBucketPolicy
Controls access to the GetBucketPolicy <API_GetBucketPolicy.html>
S3
API operation.
s3:PutBucketPolicy
Controls access to the PutBucketPolicy <API_PutBucketPolicy.html>
S3
API operation.
s3:DeleteBucketPolicy
Controls access to the DeleteBucketPolicy
<API_DeleteBucketPolicy.html>
S3 API operation.
s3:GetBucketTagging
Controls access to the GetBucketTagging <API_GetBucketTagging.html>
S3 API operation.
s3:PutBucketTagging
Controls access to the PutBucketTagging <API_PutBucketTagging.html>
S3 API operation.
Multipart Upload
s3:AbortMultipartUpload
Controls access to the AbortMultipartUpload
<API_AbortMultipartUpload.html>
S3 API operation.
s3:ListMultipartUploadParts
Controls access to the ListParts <API_ListParts.html>
S3 API
operation.
s3:ListBucketMultipartUploads
Controls access to the ListMultipartUploads
<API_ListMultipartUploads.html>
S3 API operation.
Versioning and Retention
s3:PutBucketVersioning
Controls access to the PutBucketVersioning
<API_PutBucketVersioning.html>
S3 API operation.
s3:GetBucketVersioning
Controls access to the GetBucketVersioning
<API_GetBucketVersioning.html>
S3 API operation.
s3:DeleteObjectVersion
Controls access to the DeleteObjectVersion
<API_DeleteObjectVersion.html>
S3 API operation.
s3:DeleteObjectVersionTagging
Controls access to the DeleteObjectVersionTagging
<API_DeleteObjectVersionTagging.html>
S3 API operation.
s3:GetObjectVersion
Controls access to the GetObjectVersion
<API_GetObjectVersion.html>
S3 API operation.
s3:BypassGovernanceRetention
Controls access to the following S3 API operations on objects locked
under GOVERNANCE <mc retention set MODE>
retention
mode:
PutObjectRetention
PutObject
DeleteObject
See the S3 documentation on s3:BypassGovernanceRetention
<object-lock-managing.html#object-lock-managing-bypass>
for
more information.
s3:PutObjectRetention
Controls access to the PutObjectRetention
<API_PutObjectRetention.html>
S3 API operation.
Required for any PutObject
operation that specifies
retention metadata <minio-object-locking>
.
s3:GetObjectRetention
Controls access to the GetObjectRetention
<API_GetObjectRetention.html>
S3 API operation.
Required for including object locking metadata <minio-object-locking>
as part of the response to a GetObject
or
HeadObject
operation.
s3:GetObjectLegalHold
Controls access to the GetObjectLegalHold
<API_GetObjectLegalHold.html>
S3 API operation.
Required for including object locking metadata <minio-object-locking>
as part of the response to a GetObject
or
HeadObject
operation.
s3:PutObjectLegalHold
Controls access to the PutObjectLegalHold
<API_PutObjectLegalHold.html>
S3 API operation.
Required for any PutObject
operation that specifies
legal hold metadata <minio-object-locking>
.
s3:GetBucketObjectLockConfiguration
Controls access to the GetObjectLockConfiguration
<API_GetObjectLockConfiguration.html>
S3 API operation.
s3:PutBucketObjectLockConfiguration
Controls access to the PutObjectLockConfiguration
<API_PutObjectLockConfiguration.html>
S3 API operation.
Bucket Notifications
s3:GetBucketNotification
Controls access to the GetBucketNotification
<API_GetBucketNotification.html>
S3 API operation.
s3:PutBucketNotification
Controls access to the PutBucketNotification
<API_PutBucketNotification.html>
S3 API operation.
s3:ListenNotification
MinIO Extension for controlling API operations related to MinIO Bucket Notifications.
This action is not intended for use with other S3-compatible services.
s3:ListenBucketNotification
MinIO Extension for controlling API operations related to MinIO Bucket Notifications.
This action is not intended for use with other S3-compatible services.
Object Lifecycle Management
s3:PutLifecycleConfiguration
Controls access to the PutLifecycleConfiguration
<API_PutBucketLifecycleConfiguration.html>
S3 API
operation.
s3:GetLifecycleConfiguration
Controls access to the GetLifecycleConfiguration
<API_GetBucketLifecycleConfiguration.html>
S3 API
operation.
Object Encryption
s3:PutEncryptionConfiguration
Controls access to the PutEncryptionConfiguration
<API_PutBucketEncryption.html>
S3 API operation.
s3:GetEncryptionConfiguration
Controls access to the GetEncryptionConfiguration
<API_GetBucketEncryption.html>
S3 API operation.
Bucket Replication
s3:GetReplicationConfiguration
Controls access to the GetBucketReplication
<API_GetBucketReplication.html>
S3 API operation.
s3:PutReplicationConfiguration
Controls access to the PutBucketReplication
<PutBucketReplication.html>
S3 API operation.
s3:ReplicateObject
MinIO Extension for controlling API operations related to Server-Side Bucket Replication <minio-bucket-replication-serverside>
.
Required for server-side replication.
s3:ReplicateDelete
MinIO Extension for controlling API operations related to Server-Side Bucket Replication <minio-bucket-replication-serverside>
.
Required for synchronizing delete operations as part of server-side replication.
s3:ReplicateTags
MinIO Extension for controlling API operations related to Server-Side Bucket Replication <minio-bucket-replication-serverside>
.
Required for server-side replication.
s3:GetObjectVersionForReplication
MinIO Extension for controlling API operations related to Server-Side Bucket Replication <minio-bucket-replication-serverside>
.
Required for server-side replication.
Supported S3 Policy Condition Keys
MinIO policy documents support IAM conditional statements <reference_policies_elements_condition.html>
.
Each condition element consists of operators <reference_policies_elements_condition_operators.html>
and condition keys. MinIO supports a subset of IAM condition keys. For
complete information on any listed condition key, see the IAM Condition Element Documentation
<reference_policies_elements_condition.html>
MinIO supports the following condition keys for all supported actions <minio-policy-actions>
:
aws:Referer
aws:SourceIp
aws:UserAgent
aws:SecureTransport
aws:CurrentTime
aws:EpochTime
aws:PrincipalType
aws:userid
aws:username
x-amz-content-sha256
The following table lists additional supported condition keys for specific actions:
Action Key | Condition Keys |
---|---|
s3:GetObject |
x-amz-server-side-encryption x-amz-server-side-encryption-customer-algorithm |
s3:ListBucket |
prefix delimiter max-keys |
s3:PutObject |
x-amz-copy-source x-amz-server-side-encryption x-amz-server-side-encryption-customer-algorithm x-amz-metadata-directive x-amz-storage-class object-lock-retain-until-date object-lock-mode object-lock-legal-hold |
s3:PutObjectRetention |
x-amz-object-lock-remaining-retention-days x-amz-object-lock-retain-until-date x-amz-object-lock-mode |
s3:PutObjectLegalHold |
object-lock-legal-hold |
s3:BypassGovernanceRetention |
object-lock-remaining-retention-days object-lock-retain-until-date object-lock-mode object-lock-legal-hold |
s3:GetObjectVersion |
versionid |
s3:DeleteObjectVersion |
versionid |
mc admin
Policy
Action Keys
MinIO supports the following actions for use with defining policies
for mc admin
operations.
These actions are only valid for MinIO deployments and are
not intended for use with other S3-compatible services:
admin:*
Selector for all admin action keys.
admin:Heal
Allows heal command
admin:StorageInfo
Allows listing server info
admin:DataUsageInfo
Allows listing data usage info
admin:TopLocksInfo
Allows listing top locks
admin:Profiling
Allows profiling
admin:ServerTrace
Allows listing server trace
admin:ConsoleLog
Allows listing console logs on terminal
admin:KMSCreateKey
Allows creating a new KMS master key
admin:KMSKeyStatus
Allows getting KMS key status
admin:ServerInfo
Allows listing server info
admin:OBDInfo
Allows obtaining cluster on-board diagnostics
admin:ServerUpdate
Allows MinIO binary update
admin:ServiceRestart
Allows restart of MinIO service.
admin:ServiceStop
Allows stopping MinIO service.
admin:ConfigUpdate
Allows MinIO config management
admin:CreateUser
Allows creating MinIO user
admin:DeleteUser
Allows deleting MinIO user
admin:ListUsers
Allows list users permission
admin:EnableUser
Allows enable user permission
admin:DisableUser
Allows disable user permission
admin:GetUser
Allows GET permission on user info
admin:AddUserToGroup
Allows adding user to group permission
admin:RemoveUserFromGroup
Allows removing user to group permission
admin:GetGroup
Allows getting group info
admin:ListGroups
Allows list groups permission
admin:EnableGroup
Allows enable group permission
admin:DisableGroup
Allows disable group permission
admin:CreatePolicy
Allows create policy permission
admin:DeletePolicy
Allows delete policy permission
admin:GetPolicy
Allows get policy permission
admin:AttachUserOrGroupPolicy
Allows attaching a policy to a user/group
admin:ListUserPolicies
Allows listing user policies
admin:CreateServiceAccount
Allows creating MinIO Service Account
admin:UpdateServiceAccount
Allows updating MinIO Service Account
admin:RemoveServiceAccount
Allows deleting MinIO Service Account
admin:ListServiceAccounts
Allows listing MinIO Service Account
admin:SetBucketQuota
Allows setting bucket quota
admin:GetBucketQuota
Allows getting bucket quota
admin:SetBucketTarget
Allows setting bucket target
admin:GetBucketTarget
Allows getting bucket targets
admin:SetTier
Allows creating and modifying remote storage tiers using the mc admin tier
command.
admin:ListTier
Allows listing configured remote storage tiers using the mc admin tier
command.
admin:BandwidthMonitor
Allows retrieving metrics related to current bandwidth consumption.
admin:Prometheus
Allows access to MinIO metrics <minio-metrics-and-alerts-endpoints>
.
Only required if MinIO requires authentication for scraping metrics.
admin:ListBatchJobs
Allows access to list the active batch jobs.
admin:DescribeBatchJobs
Allows access to the see the definition details of a running batch job.
admin:StartBatchJob
Allows user to begin a batch job run.
admin:Rebalance
Allows access to start, query, or stop a rebalancing of objects across pools with varying free storage space.
mc admin
Policy
Condition Keys
MinIO supports the following conditions for use with defining
policies for mc admin
actions <minio-policy-mc-admin-actions>
.
aws:Referer
aws:SourceIp
aws:UserAgent
aws:SecureTransport
aws:CurrentTime
aws:EpochTime
For complete information on any listed condition key, see the IAM
Condition Element Documentation <reference_policies_elements_condition.html>