ECS: ACL de bucket somente leitura para usuário de objeto não proprietário que não consegue fazer download dos objetos carregados
摘要: Esta base de conhecimento explica o conceito de ACLs (Access Control Lists, listas de controle de acesso) de buckets para o usuário de objeto não proprietário de uma perspectiva somente leitura no navegador S3. ...
症狀
O usuário de objeto não proprietário foi adicionado como somente leitura ao bucket usando uma ACL de bucket.
Um usuário de objeto que não é proprietário do bucket não consegue fazer download dos objetos que foram carregados pelo usuário proprietário do bucket de objeto antes da criação da ACL do bucket.
O fluxo do problema é o seguinte:
- O bucket foi criado com o proprietário do objeto atribuído ao usuário.
- Alguns arquivos foram carregados no bucket pelo usuário proprietário do objeto.
- O usuário de objeto não proprietário foi adicionado como somente leitura ao bucket usando uma ACL de bucket.
- Ao tentar acessar o bucket, o usuário de objeto não proprietário pode listar e fazer download de objetos carregados recentemente, mas não pode fazer download de objetos carregados antes da ACL de bucket somente leitura. Podemos ver que os direitos do usuário sobre os objetos não são definidos no navegador S3 de acordo com a configuração na interface do usuário do ECS.
O erro quando o usuário de objeto não proprietário clica em um objeto usando o navegador S3 é o seguinte: (Acesso negado: Acesso negado):
A seguir está a configuração da ACL do bucket para o usuário proprietário do objeto (a_s3user) e o usuário não proprietário do objeto (a_s3test):
原因
As permissões do S3 podem ser definidas no nível do bucket ou do objeto. O ECS segue os mesmos princípios do AWS S3, dependendo do tipo de política aplicada. Ela determina o tipo de operações que serão permitidas no nível do bucket ou do objeto.
- Quando READ e READ ACL são concedidas no nível de bucket do ECS, o proprietário que não é do bucket deve listar apenas os objetos no bucket. O proprietário que não é do bucket não pode fazer download dos dados do bucket
- Ao gravar um objeto em um bucket, somente o usuário que grava o objeto tem permissão de leitura. Para que outros usuários leiam os objetos, o proprietário precisa conceder explicitamente permissão aos usuários.
- Para conceder permissão a proprietários que não são do bucket, temos que usar as políticas de bucket do S3
As permissões de ACL que podem ser atribuídas são fornecidas na tabela a seguir. As permissões aplicáveis dependem do tipo de bucket.
| ACL | Permissão | ||
|---|---|---|---|
| Read | Permite que o usuário liste os objetos no bucket | ||
| Read ACL | Permite que o usuário leia a ACL do bucket | ||
| Gravação | Permite que o usuário crie ou atualize qualquer objeto no bucket | ||
| Gravar ACL. | Permite que o usuário grave a ACL para o bucket | ||
| Executar | Define a permissão de execução quando acessada como um file system — essa permissão não tem efeito quando o objeto é acessado usando os protocolos de objeto do ECS. | ||
| Full Control | Permite ao usuário ler, gravar, ler e gravar na ACL.
|
||
| Privileged Write | Permite que o usuário execute gravações em um bucket ou objeto quando o usuário não tem permissão de gravação normal — necessário para buckets CAS | ||
| Apagar | Permite que o usuário exclua buckets e objetos — obrigatório para buckets CAS | ||
| Nenhuma | O usuário não tem privilégios no bucket. |
A AWS oferece suporte a vários tipos de política.
- ACLs (Access Control Lists, listas de controle de acesso)
- Políticas baseadas em identidade
- Limites de permissões
- Políticas baseadas em recursos
Referência de ACL de bucket da AWS
A tabela a seguir lista o conjunto de permissões compatíveis com o Amazon S3 em uma ACL. O conjunto de permissões de ACL é o mesmo para uma ACL de objeto e uma ACL de bucket. No entanto, dependendo do contexto (ACL de bucket ou ACL de objeto), essas permissões de ACL concedem permissões para buckets específicos ou operações de objeto. A tabela lista as permissões e descreve o que elas significam no contexto de objetos e buckets.
| Permissão | Quando concedido em um bucket | Quando concedido em um objeto |
|---|---|---|
READ |
Permite que o beneficiário liste os objetos no bucket | Permite que o beneficiário leia os dados do objeto e seus metadados |
WRITE |
Permite que o beneficiário crie, substitua e exclua qualquer objeto no bucket | Não aplicável |
READ_ACP |
Permite que o beneficiário leia a ACL do bucket | Permite que o beneficiário leia a ACL do objeto |
WRITE_ACP |
Permite que o beneficiário grave a ACL para o bucket aplicável | Permite que o beneficiário grave a ACL para o objeto aplicável |
FULL_CONTROL |
Permite ao concedido as permissões READ, WRITE, READ_ACP e WRITE_ACP no bucket | Permite ao conceder as permissões READ, READ_ACP e WRITE_ACP no objeto |
Documentação do Amazon S3
A tabela a seguir mostra como cada permissão de ACL é associada às permissões correspondentes da política de acesso. Como você pode ver, a política de acesso permite mais permissões do que uma ACL. Você usa as ACLs principalmente para conceder permissões básicas de leitura/gravação, semelhantes às permissões do sistema de arquivos. Para obter mais informações sobre quando usar uma ACL, consulte Diretrizes para usar as opções de política de acesso disponíveis.
| Permissão de ACL | Permissões de política de acesso correspondentes quando a permissão de ACL é concedida em um bucket | Permissões de política de acesso correspondentes quando a permissão de ACL é concedida em um objeto |
|---|---|---|
READ |
s3:ListBucket, s3:ListBucketVersionse s3:ListBucketMultipartUploads |
s3:GetObject, s3:GetObjectVersione s3:GetObjectTorrent |
WRITE |
Além disso, quando o donatário for o proprietário da caçamba, conceder |
Não aplicável |
READ_ACP |
s3:GetBucketAcl |
s3:GetObjectAcl e s3:GetObjectVersionAcl |
WRITE_ACP |
s3:PutBucketAcl |
s3:PutObjectAcl e s3:PutObjectVersionAcl |
FULL_CONTROL |
Equivalente à concessão READ, WRITE, READ_ACPe WRITE_ACP Permissões de ACL - Essa permissão de ACL é associada a uma combinação de permissões de política de acesso correspondentes. |
Equivalente à concessão READ, READ_ACPe WRITE_ACP Permissões de ACL. Portanto, essa permissão de ACL é associada a uma combinação de permissões de política de acesso correspondentes. |
解析度
Opção 1:
Consulte o Guia de acesso aos dados do ECS sobre como usar políticas de bucket. Ao contrário das ACLs, que permitem todas as ações ou nenhuma, as políticas de acesso fornecem a usuários específicos, ou a todos os usuários, permissões granulares e condicionais para ações específicas. As condições da política podem ser usadas para atribuir permissões para uma variedade de objetos que correspondem à condição. Isso pode ser usado para atribuir automaticamente permissões a objetos carregados recentemente.
Consulte AWS S3:
https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html
https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.htmlEm UI-> Manage-Bucket>- Edit bucket policy>, coloque algo semelhante a isso no editor de políticas:
{
"Version": "2012-10-17",
"Id": "Policy1593674317613",
"Statement": [
{
"Action": [
"s3:GetObject"
],
"Resource": "bucket_name/*",
"Effect": "Allow",
"Principal": "read-only_user",
"Sid": "Stmt1593673962638"
}
]
} Onde Ação: "S3:GetObject" é a ação para ter permissão para baixar objetos.
Onde Efeito: "allow"
where resource": "bucket_name/*" é o nome do bucket.
Onde Principal": "read-only_user", é um usuário não proprietário do bucket.
Opção 2:
Usando o navegador S3 com o proprietário do objeto, altere a permissão de Usuários autenticados para objetos carregados antes da ACL de bucket somente leitura para garantir que o usuário de objeto não proprietário possa fazer download do objeto:
其他資訊
Se você estiver encontrando problemas para carregar um objeto por meio do proprietário do objeto e as permissões não forem aplicadas aos usuários autenticados que têm acesso de gravação, leia o artigo da base de conhecimento 520711