Add README.md to minio and json policies
This commit is contained in:
parent
6c49bb5be2
commit
08bb832edd
199
manifests/minio-bitnami/README.md
Normal file
199
manifests/minio-bitnami/README.md
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
# MinIO Bitnami Configuration
|
||||||
|
|
||||||
|
This directory contains configuration and policies for MinIO deployed using the Bitnami Helm chart.
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
- `values.yaml` - Helm chart values for MinIO deployment
|
||||||
|
- `monitoring.yaml` - Monitoring configuration
|
||||||
|
- `minio-admins.json` - Full admin access policy
|
||||||
|
- `minio-users.json` - Standard user access policy
|
||||||
|
|
||||||
|
## Creating New Policies
|
||||||
|
|
||||||
|
MinIO uses IAM-style policies (similar to AWS S3) to control access to buckets and objects.
|
||||||
|
|
||||||
|
### 1. Create Policy JSON File
|
||||||
|
|
||||||
|
Create a new JSON file with your policy definition:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Version": "2012-10-17",
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": [
|
||||||
|
"s3:GetObject",
|
||||||
|
"s3:ListBucket"
|
||||||
|
],
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::my-bucket/*",
|
||||||
|
"arn:aws:s3:::my-bucket"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Common Actions**:
|
||||||
|
- `s3:*` - All actions (full access)
|
||||||
|
- `s3:GetObject` - Read objects
|
||||||
|
- `s3:PutObject` - Write/upload objects
|
||||||
|
- `s3:DeleteObject` - Delete objects
|
||||||
|
- `s3:ListBucket` - List bucket contents
|
||||||
|
- `s3:GetBucketLocation` - Get bucket location
|
||||||
|
- `s3:ListAllMyBuckets` - List all buckets
|
||||||
|
|
||||||
|
**Resource Patterns**:
|
||||||
|
- `arn:aws:s3:::*` - All buckets and objects
|
||||||
|
- `arn:aws:s3:::my-bucket` - Specific bucket
|
||||||
|
- `arn:aws:s3:::my-bucket/*` - All objects in a bucket
|
||||||
|
- `arn:aws:s3:::my-bucket/prefix/*` - Objects with prefix
|
||||||
|
|
||||||
|
### 2. Apply Policy Using MinIO Client (mc)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Configure mc alias (one-time setup)
|
||||||
|
mc alias set myminio https://minio.example.com ACCESS_KEY SECRET_KEY
|
||||||
|
|
||||||
|
# Create the policy
|
||||||
|
mc admin policy create myminio policy-name path/to/policy.json
|
||||||
|
|
||||||
|
# List all policies
|
||||||
|
mc admin policy list myminio
|
||||||
|
|
||||||
|
# View policy details
|
||||||
|
mc admin policy info myminio policy-name
|
||||||
|
|
||||||
|
# Remove a policy
|
||||||
|
mc admin policy remove myminio policy-name
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Assign Policy to Users or Groups
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Assign policy to a user
|
||||||
|
mc admin policy attach myminio policy-name --user username
|
||||||
|
|
||||||
|
# Assign policy to a group
|
||||||
|
mc admin policy attach myminio policy-name --group groupname
|
||||||
|
|
||||||
|
# List user policies
|
||||||
|
mc admin user info myminio username
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example Policies
|
||||||
|
|
||||||
|
### Read-Only Access to Specific Bucket
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Version": "2012-10-17",
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": [
|
||||||
|
"s3:GetObject",
|
||||||
|
"s3:ListBucket"
|
||||||
|
],
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::my-bucket",
|
||||||
|
"arn:aws:s3:::my-bucket/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Read-Write Access to Specific Prefix
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Version": "2012-10-17",
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": [
|
||||||
|
"s3:GetObject",
|
||||||
|
"s3:PutObject",
|
||||||
|
"s3:DeleteObject"
|
||||||
|
],
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::my-bucket/uploads/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": [
|
||||||
|
"s3:ListBucket"
|
||||||
|
],
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::my-bucket"
|
||||||
|
],
|
||||||
|
"Condition": {
|
||||||
|
"StringLike": {
|
||||||
|
"s3:prefix": ["uploads/*"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Multiple Buckets with Different Permissions
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Version": "2012-10-17",
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": [
|
||||||
|
"s3:GetObject",
|
||||||
|
"s3:ListBucket"
|
||||||
|
],
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::public-bucket",
|
||||||
|
"arn:aws:s3:::public-bucket/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": [
|
||||||
|
"s3:*"
|
||||||
|
],
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::private-bucket",
|
||||||
|
"arn:aws:s3:::private-bucket/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tips
|
||||||
|
|
||||||
|
- Always test policies with a test user before applying to production
|
||||||
|
- Use `mc admin policy info` to verify policy is correctly formatted
|
||||||
|
- Policies are applied immediately - no restart required
|
||||||
|
- Users can have multiple policies attached
|
||||||
|
- More specific policies take precedence over general ones
|
||||||
|
- Use groups to manage policies for multiple users efficiently
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
**Policy not taking effect:**
|
||||||
|
- Verify user/group has policy attached: `mc admin user info myminio username`
|
||||||
|
- Check MinIO server logs for policy evaluation errors
|
||||||
|
- Ensure bucket/prefix names match exactly (case-sensitive)
|
||||||
|
|
||||||
|
**Access denied errors:**
|
||||||
|
- Verify resource ARN matches the bucket/object pattern
|
||||||
|
- Check if actions include the operation being performed
|
||||||
|
- Ensure both bucket-level and object-level permissions are set
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- [MinIO IAM Documentation](https://min.io/docs/minio/linux/administration/identity-access-management.html)
|
||||||
|
- [AWS S3 IAM Policy Examples](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html)
|
||||||
14
manifests/minio-bitnami/minio-admins.json
Normal file
14
manifests/minio-bitnami/minio-admins.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"Version": "2012-10-17",
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Action": [
|
||||||
|
"s3:*"
|
||||||
|
],
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
24
manifests/minio-bitnami/minio-users.json
Normal file
24
manifests/minio-bitnami/minio-users.json
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"Version": "2012-10-17",
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Action": [
|
||||||
|
"s3:GetBucketLocation",
|
||||||
|
"s3:ListBucket"
|
||||||
|
],
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Action": [
|
||||||
|
"s3:GetObject"
|
||||||
|
],
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::*/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user