IAM 用户可以查看 Athena 表如何限制一个用户看不到其他数据库和表

问题描述

我正在使用 DMS 将我的数据复制到 S3 存储桶中,并在 AWS Athena 上按“用户 ID”过滤和创建单独的数据库后读取该数据。我想让我的客户只访问他们的 USERID,以便他们只能查询那里的数据,而不能查看或查看 Athena 上的其他数据库。想知道如何实现这一目标。我尝试创建 IAM 权限/角色,但我仍然能够查看数据目录中的所有数据库查询它们。请帮忙

谢谢

解决方法

创建策略

{
   "Effect": "Allow","Action": [
      "glue:GetDatabase","glue:GetTables"    
   ],"Resource": [
     "arn:aws:glue:XXX:XXX:catalog","arn:aws:glue:XXX:XXX:database/example_db","arn:aws:glue:XXX:XXX:table/example_db/*"
   ]
 }

并将此策略附加到用户角色(用户所属)。将此策略附加到用户角色后,他将只能看到 example_db 数据库的表。如果您不想授予整个数据库访问权限,请删除“*”并提供特定的表名。

此外,请确保没有向用户或其组授予其他权限。最好为该用户创建一个新角色并附加策略。