2012-01-31 13 views
9

Estoy tratando de descubrir un conjunto básico de permisos para que un usuario/clave IAM tenga acceso a solo un depósito en S3, solo acceso de lectura/escritura en un segmento individual .Permisos AWS IAM básicos para un segmento S3

¿Qué conjunto de permisos es el mínimo requerido para que esto funcione? Tengo todas las opciones seleccionadas en el generador de políticas de IAM para S3, todos los permisos habilitados en el depósito excepto CreateBucket y DeleteBucket. También creé un conjunto de claves específicas para este usuario.

Cuando intento acceder al depósito con estas credenciales, aparece un problema al enumerar los depósitos, aunque la propiedad ListAllMyBuckets está habilitada.

¿Alguien tiene alguna experiencia en la configuración básica de un cubo como este? Parece que sería bastante común ...

+1

¿por qué quieres listar cubos en primer lugar, cuando el usuario de IAM se supone que sólo acceder _a solo cubo en S3_? –

+1

Si no registra el nombre del depósito al que tiene acceso el usuario, entonces ListAllMyBuckets está bien, entonces el código puede determinar a qué depósitos puede acceder realmente el usuario. Esto depende de 'qué tan privado' quieras que sean los nombres de los contenedores. Pero dado que los nombres de cubo son básicamente de dominio público (puede hacer ping a Amazon para saber si hay algún nombre de depósito en uso), solo los nombres de cubo de "cadena aleatoria" están cerca de ser privados, e incluso esto es fugaz, ya que los nombres de depósito van con cada URL generada, etc. –

+0

Steffen, no quiero la cuenta para ListAllBuckets, pero no está funcionando con las permanentes que quiero, así que estoy habilitando progresivamente más permisos para ver si hay algún nivel de denegación de acceso más alto. en... – colemanm

Respuesta

12

Los Example Policies for Amazon S3 cubren varios casos de uso similares o relacionados con el suyo - en concreto, probablemente, es posible que desee combinar Ejemplo 1: permitir que cada usuario tiene un directorio principal en Amazon S3 conEjemplo 2: Permitir que un usuario enumere solo los objetos en su directorio de inicio en el cubo corporativo - solo necesita ajustar Resource para apuntar a su directorio raíz de cubos, es decir, reemplace /home/bob/* con *.

Tenga en cuenta que Ejemplo 2 facilita ListBucket, que es un operation on a bucket que devuelve información sobre algunos de los artículos en el cubo, mientras que ListAllMyBuckets es un operation on the service que devuelve una lista de todos los cubos de propiedad del remitente la solicitud, probablemente no sea aplicable a su caso de uso (ver mi comentario sobre la aclaración de este último).

0

Esto permitirá listar todos los cubos asumiendo que no están negando en otro lugar (estoy 99% seguro de negar las declaraciones son evaluados en primer lugar; el orden no importa con las políticas IAM):

{ 
     "Effect": "Allow", 
     "Action": [ 
      "s3:ListAllMyBuckets" 
     ], 
     "Resource": "*" 
    } 

Permiso de lo que quiere para su cubos (no se olvide la/* también):

{ 
     "Effect": "Allow", 
     "Action": [ 
      "s3:<Put your actions here; cherry pick from the AWS documentation>" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::<Bucket name here>", 
      "arn:aws:s3:::<Bucket name here>/*" 
     ] 
    } 
Cuestiones relacionadas