为什么在 Lake Formation 中限制了 IAM 用户的权限后,他们仍然可以使用 Athena 访问我的数据目录资源?
我在 AWS Lake Formation 中限制了 AWS Identity and Access Management (IAM) 用户的权限。但是,IAM 用户仍然可以访问 Amazon Athena 来查询表。
简短描述
要限制 IAM 用户访问权限,请更新新数据目录资源和现有数据目录资源的默认安全设置,以使用 Lake Formation 权限模型。
要了解有关 Lake Formation 默认权限的详细信息,请参阅将 AWS Glue 数据权限升级到 AWS Lake Formation 模型。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,确保您使用的是最新版本的 AWS CLI。
更新新数据目录资源的默认安全设置
有关数据湖中的新数据目录资源,请参阅更改数据湖的默认设置。对默认安全设置的更新仅适用于新资源。
要仅更新特定新资源的安全设置,请创建资源。然后,仅更新该资源的权限。有关详细信息,请参阅授予对数据目录资源的权限。
更新现有数据目录资源的安全设置
要从现有数据库中删除 IAMAllowedPrincipals 权限,请完成以下步骤:
- 打开 AWS Lake Formation 控制台。
- 在导航窗格的 Data catalog(数据目录)下,选择 Databases(数据库)。
- 选择要更新的数据库旁边的圆圈。
- 选择 Actions(操作),然后选择 Edit(编辑)。
- 在 Default permissions for newly created tables(新创建表的默认权限)下,清除 Use only IAM access control for new tables in this database(仅对此数据库中的新表使用 IAM 访问控制)。
- 选择 Save(保存)。
- 在 Databases(数据库)页面上,确认已选择数据库。选择 Actions(操作),然后选择 Revoke(撤销)。
- 在 Revoke permissions(撤消权限)对话框的 IAM users and roles(IAM 用户和角色)列表中,对于 Group(组),选择 IAMAllowedPrincipals。
- 在 Database permissions(数据库权限)下,确认已选择 Super,然后选择 Revoke(撤销)。
要删除现有表的 IAMAllowedPrincipals 权限,请完成以下步骤:
- 打开 AWS Lake Formation 控制台。
- 在导航窗格中,选择 Tables(表)。
- 在 Tables(表)页面上,选择要更新的表旁边的圆圈。
- 选择 Actions(操作),然后选择 Revoke(撤销)。
- 在 Revoke permissions(撤消权限)对话框的 IAM users and roles(IAM 用户和角色)列表中,对于 Group(组),选择 IAMAllowedPrincipals。
- 在 Table permissions(表权限)下,确认已选择 Super,然后选择 Revoke(撤销)。
**注意:**确保使用 Lake Formation 注册了指向数据库或表的 Amazon Simple Storage Service (Amazon S3) 路径。
更改现有资源的安全设置后,使用 AWS CLI 或 Lake Formation 控制台向 IAM 用户授予表权限。
要执行 Lake Formation 操作,用户必须拥有 Lake Formation 和 IAM 权限。要在 Lake Formation 管理权限时通过 Athena 查询表,用户必须拥有以下 IAM 权限:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "minimumAWSGlueLakeFormationAthenapermissiontorunselectqueryontable", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:SearchTables", "glue:GetTables", "glue:GetPartitions", "glue:GetDatabases", "glue:GetTable", "glue:GetDatabase", "athena:GetNamespace", "athena:ListWorkGroups", "athena:GetCatalogs", "athena:GetNamespaces", "athena:GetExecutionEngine", "athena:GetExecutionEngines", "athena:GetTables", "athena:GetTable" ], "Resource": "*" }, { "Sid": "AthenaPermissionToRunQueryInAWorkergroup", "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "athena:GetQueryResults", "athena:DeleteNamedQuery", "athena:GetNamedQuery", "athena:ListQueryExecutions", "athena:StopQueryExecution", "athena:GetQueryResultsStream", "athena:ListNamedQueries", "athena:CreateNamedQuery", "athena:GetQueryExecution", "athena:BatchGetNamedQuery", "athena:BatchGetQueryExecution" ], "Resource": [ "arn:aws:athena:*:*:workgroup/*" ] }, { "Sid": "allowS3PermissionToSaveAthenaQueryResults", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucketMultipartUploads", "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:ListBucket", "s3:GetBucketLocation", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::aws-athena-query-results-*" ] } ] }
相关内容
- AWS 官方已更新 1 年前