為什麼我在 Lake Formation 中限制了 IAM 使用者的許可之後,他們仍可以使用 Athena 存取我的 Data Catalog 資源?

2 分的閱讀內容
0

我在 AWS Lake Formation 中限制了 AWS Identity and Access Management (IAM) 使用者的許可。但是,IAM 使用者仍然可以存取 Amazon Athena 來查詢表格。

簡短說明

若要限制 IAM 使用者存取,請更新新的現有 Data Catalog 資源的預設安全設定,以使用 Lake Formation 許可模型。

若要進一步了解 Lake Formation 預設許可,請參閱將 AWS Glue 資料許可升級至 AWS Lake Formation 模型

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

更新新的 Data Catalog 資源的預設安全設定

如需資料湖中的新 Data Catalog 資源,請參閱變更資料湖的預設設定。預設安全設定的更新僅適用於新資源。

若要僅更新特定新資源的安全設定,請先建立資源。接下來,僅更新資源的許可。如需詳細資訊,請參閱授與 Data Catalog 資源的許可

更新現有 Data Catalog 資源的安全設定

若要從現有資料庫移除 **IAMAllowedPrincipals ** 許可,請完成下列步驟:

  1. 開啟 AWS Lake Formation 主控台
  2. 在導覽窗格的 Data Catalog下,選擇資料庫
  3. 選取您要更新的資料庫旁邊的圓圈。
  4. 選擇動作,然後選擇編輯
  5. 新建立的資料表的預設許可下,清除僅對此資料庫中的新資料表使用 IAM 存取控制
  6. 選擇儲存
  7. 資料庫頁面上,驗證已選取資料庫。選擇動作,然後選擇撤銷
  8. 撤銷許可對話方塊的IAM 使用者和角色清單中,針對群組,選擇 IAMAllowedPrincipals
  9. 資料庫許可下,驗證已選取超級,然後選擇撤銷

若要移除現有資料表上的 IAMAllowedPrincipals 許可,請完成下列步驟:

  1. 開啟 AWS Lake Formation 主控台
  2. 在瀏覽窗格中,選擇資料表
  3. 資料表頁面上,選取您要更新的資料表旁邊的圓圈。
  4. 選擇動作,然後選擇撤銷
  5. 撤銷許可對話方塊的IAM 使用者和角色清單中,針對群組,選擇 IAMAllowedPrincipals
  6. 資料表許可下,驗證已選取超級,然後選擇撤銷

**注意:**請確保資料庫或資料表的 Amazon Simple Storage Service (Amazon S3) 路徑已在 Lake Formation 中註冊

變更現有資源的安全設定後,請使用 AWS CLILake 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 官方
AWS 官方已更新 4 個月前