Athena 上仅对一个数据库的 IAM CreateTable 权限

efb*_*own 3 amazon-web-services amazon-iam amazon-athena

我有一个组,我想向其授予Athena 中一个数据库的权限,同时向同一组CreateTable应用较少的权限,例如对所有数据库的权限。RunQuery是否可以根据具体情况向 Athena 数据库应用权限?

例如,在下面的 IAM 策略中,我想赋予该组在测试数据库中创建和删除表的能力。

来自AWS文档

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:RunQuery",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution"
            ],
            "Resource": [
                "*"  // Apply these permissions on all schemas
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateTable",
                "glue:DeleteTable"
            ],
            "Resource": [
                "test"   // Apply these permissions to only the test database
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

The*_*heo 6

当您提出这个问题时,不可能向特定数据库和表授予权限,但现在可以了。

需要授予目录、数据库、表三个级别的权限(表权限、数据库权限只需要前两个)。

以下示例展示了如何向my_dbus-east-1 中账户 1234567890 中调用的数据库中的所有表授予创建、更新和删除权限:

 {
  "Effect": "Allow",
  "Action": [
    "glue:CreateTable",
    "glue:UpdateTable",
    "glue:DeleteTable"
  ],
  "Resource": [
    "arn:aws:glue:us-east-1:1234567890:catalog",
    "arn:aws:glue:us-east-1:1234567890:database/my_db",
    "arn:aws:glue:us-east-1:1234567890:table/my_db/*"
  ]
}
Run Code Online (Sandbox Code Playgroud)

可以对数据库名称或部分数据库名称使用通配符(例如,如果您想向具有特定前缀的所有数据库授予某些权限),表名称也可以使用通配符。