
Estoy probando la herramienta CloudBerry Drive para conectar depósitos S3 como mi unidad de red. Tengo un depósito y 2 carpetas dentro de él, asumiendo el nombre del depósito como entorno y 2 carpetas como dev y prod. Tengo 3 grupos de usuarios que usarían esto: Admin, Dev y Prod. Administrador: debe tener permisos de lectura y escritura para ambas carpetas. Dev: debe tener acceso de escritura solo a la carpeta de desarrollo. Prod: debe tener acceso de lectura a la carpeta de desarrollo y acceso de escritura a la carpeta de desarrollo.
Sin embargo, estoy confundido con los permisos de IAM. El administrador funciona bien con los permisos de acceso total de S3. Pero las otras 2 cuentas no funcionan bien.
desarrollador
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:DeleteObjectVersion",
"s3:RestoreObject",
"s3:PutObjectVersionTagging",
"s3:PutObjectTagging",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::environment/dev/*"
}
]
}
Con esto debería poder leer y escribir en la carpeta de desarrollo, lo cual no puedo hacer. Usando CloudBerry Drive puedo copiar y pegar un archivo, pero no lo subo a S3. Además, los archivos en S3 se enumeran aquí (lo cual es obligatorio) pero no se puede acceder a ellos (error adjunto).
Pinchar
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:DeleteObjectTagging",
"s3:DeleteObjectVersion",
"s3:GetObjectVersionTagging",
"s3:ReplicateTags",
"s3:RestoreObject",
"s3:PutObjectVersionTagging",
"s3:DeleteObjectVersionTagging",
"s3:ListMultipartUploadParts",
"s3:ReplicateObject",
"s3:GetObjectVersionTorrent",
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:ObjectOwnerOverrideToBucketOwner",
"s3:GetObjectTorrent",
"s3:AbortMultipartUpload",
"s3:GetObjectVersionAcl",
"s3:GetObjectTagging",
"s3:PutObjectTagging",
"s3:GetObjectVersionForReplication",
"s3:DeleteObject",
"s3:ReplicateDelete",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::environment/Prod"
}
]
}
Con esto debería poder leer y escribir en la carpeta prod, lo cual no puedo hacer. Usando CloudBerry Drive puedo copiar y pegar un archivo, pero no lo subo a S3.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:GetObjectVersionTorrent",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:GetObjectTorrent",
"s3:GetObjectVersionTagging",
"s3:GetObjectVersionAcl",
"s3:GetObjectTagging",
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersion",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::environment"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"dev/*"
]
}
}
}
]
}
Los archivos en S3 se enumeran aquí (lo cual es obligatorio) pero no se puede acceder a ellos (error adjunto).
Espero tener claro mi requisito: 1. el usuario dev debe tener acceso R/W a la carpeta dev solamente 2. el usuario prod debe tener acceso R/W a la carpeta prod y acceso R a la carpeta dev 3. Todo esto se realiza usando CloudBerry Drive para S3.
Nota: Busqué mucho en Google y probé casi todo, incluidas algunas políticas que muestran cómo otorgar permiso de escritura a una carpeta de usuario específica.
Respuesta1
Disculpas por escribir una respuesta retrasada: pero en mi guión, cambie la condición de esta manera:
"Condition":{"StringLike":{"s3:prefix":["home/David/*"]}}
Gracias a ceejayoz, por señalarme este error.