Por que a mensagem "Access denied" ainda aparece depois que as permissões do sistema do OBS foram atribuídas pelo IAM?
Causa
Permissões do sistema como ReadOnlyAccess do OBS, OperateAccess do OBS e Buckets Viewer do OBS no IAM só permitem determinadas operações do OBS. Por exemplo, a permissão OperateAccess do OBS permite listar buckets, obter informações básicas do bucket, obter metadados do bucket, listar objetos (não os objetos de várias versões), fazer upload de objetos, fazer download de objetos, excluir objetos e obter ACLs de objetos. A execução de cada operação requer a chamada de uma API do OBS.
Depois que sua conta receber permissões de sistema, você poderá chamar essas APIs diretamente ou por meio de SDKs. No entanto, quando você faz logon no console do OBS ou usa o OBS Browser+, mais APIs são chamadas para carregar a lista de buckets ou a página de visão geral do bucket. Se suas permissões não cobrirem essas APIs, seu acesso será negado ou você receberá uma mensagem indicando que a operação não é permitida. Por exemplo, carregar a página de visão geral do bucket envolve chamadas de API para consultar os status de configuração das regras de ciclo de vida e CORS. Consulte Figura 1. No entanto, as permissões de sistema predefinidas não cobrem essas operações.
Soluções
As permissões autorizadas são válidas, embora as operações no console ou no cliente sejam restritas. Você pode chamar as APIs diretamente ou por meio de SDKs.
No Console do OBS ou no OBS Browser+ (um cliente), a permissão OperateAccess do OBS permite carregar e baixar objetos.
Se você não quiser que essas mensagens de erro apareçam, poderá configurar as políticas personalizadas do OBS no console do IAM para conceder mais permissões do OBS a um grupo de usuários e adicionar o usuário que precisa das permissões a esse grupo.
Por que não posso listar objetos no console do OBS mesmo se tiveram sido concedidas permissões OperateAccess e ReadOnlyAccess do OBS?
Permissões OperateAccess e ReadOnlyAccess do OBS contêm somente obs:bucket:ListBucket (usado para listar objetos), mas não obs:bucket:ListBucketVersions (usado para listar várias versões de objetos).
Se um bucket tiver várias versões de objetos, os usuários do IAM poderão não listar objetos no bucket por meio do console do OBS. Nesse caso, os usuários do IAM precisam receber a permissão obs:bucket:ListBucketVersions.