iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
Build on AWS

動漫宅的 30 天 AWS Lakehouse 修行日誌系列 第 25

Day25 視覺之章-Lake Formation 實作篇

  • 分享至 

  • xImage
  •  

簡介

在上篇 「Day24 視覺之章-Lake Formation 概念篇」中,我們理解了 Lake Formation 的基本概念,本篇我們要來實際建立透過 LF-Tag 針對 Source 進行管控,並建立 Role 做不同權限的賦予。

建立 Data lake administrators 並關閉 IAM 管理

Step1:透過使用者 Joe 登入 Lake Formation 並建立自己為 Data lake administrators

後續都將使用 Joe 來做 Lake Formation 的權限管控

https://ithelp.ithome.com.tw/upload/images/20251009/20163443UCsNSkMN6a.png

Step2:確認有正常建立 Data lake administrators

https://ithelp.ithome.com.tw/upload/images/20251009/20163443BSrY6IrRLs.png

Step3:關閉使用 IAM 做管理,以下兩個都要取消打勾後,再做儲存

  • Use only IAM access control for new databases
  • Use only IAM access control for new tables in new databases

https://ithelp.ithome.com.tw/upload/images/20251009/201634439SzgWx4zzz.png

建立 LF-Tag

Step1:登入 LF-Tags and permissions 頁面,點選 「Add LF-Tag」準備來建立 LF-Tags

https://ithelp.ithome.com.tw/upload/images/20251009/20163443rnLvw9ap8L.png

Step2:建立第一個 LF-Tags

  • Key:db
  • Value:anime

https://ithelp.ithome.com.tw/upload/images/20251009/20163443WbDSqpeulH.png

Step3:跳轉回頁面後,確認是否有正常建立 DB 用的 LF-Tags

https://ithelp.ithome.com.tw/upload/images/20251009/201634438lDKlPQp3D.png

Step4:確認有正常建立後,我們接續建立一個 Table 用的 LF-Tags

https://ithelp.ithome.com.tw/upload/images/20251009/20163443f5bQd0XQwS.png

將 LF-Tags 賦予 DB 與 Table

Step1:至 Database 頁面

  • 選擇 DB:gold
  • 然後點選 Actions
  • 選擇 Edit LF-Tags

https://ithelp.ithome.com.tw/upload/images/20251009/20163443ViGqsYJdwI.png

Step2:點選 Assign new LF-Tag

https://ithelp.ithome.com.tw/upload/images/20251009/20163443a4vboZUW39.png

Step3:選擇剛剛建立的 DB LF-Tags

  • Assigned keys:db
  • Values:anime
  • 接著按儲存

https://ithelp.ithome.com.tw/upload/images/20251009/201634434c4V3aBCAS.png

Step4:接著至 Table 頁面

  • 選擇 Table:animes_summary
  • 然後點選 Actions
  • 選擇 Edit LF-Tags

https://ithelp.ithome.com.tw/upload/images/20251009/20163443FXbKNBYiMv.png

Step5:選擇剛剛建立的 Table LF-Tags

  • Assigned keys:table
  • Values:anime
  • 接著按儲存

https://ithelp.ithome.com.tw/upload/images/20251009/201634433B3hqjlhZu.png

Step6:接著我們到 gold db 做 edit

https://ithelp.ithome.com.tw/upload/images/20251009/20163443JsLhrlOdhh.png

以上操作後即完成針對 Source 的 LF-Tags 貼標,代表這些 Source 一定得是擁有該 LF-Tags 的 Role 才能> 做查看。

建立 AnimeRole

我們將使用 AnimeRole 來進行後續的資料權限管控測試。

Step1:透過使用者 Joe 額外建立一個 Role

  • 命名為 AnimeRole
  • 並賦予 Policy AmazonAthenaFullAccess

https://ithelp.ithome.com.tw/upload/images/20251009/20163443doabHQOjqe.png

Step2:建立 Trust relationships

  • 建立後就可以透過 Switch Role 來透過 Role 登入

https://ithelp.ithome.com.tw/upload/images/20251009/20163443UfGsZW16sa.png

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<account_id>:user/Andy",
                "Service": "lakeformation.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

Step3:Switch Role

  • 透過剛剛 AnimeRole 頁面的 Link to switch roles in console 來做登入

https://ithelp.ithome.com.tw/upload/images/20251009/20163443XipxCreSwl.png

  • 將此 URL 貼到新分頁即可跳轉到 Switch Role 的頁面

https://ithelp.ithome.com.tw/upload/images/20251009/20163443o16XBcSEaB.png

  • 登入後即可以看到我們是使用 AnimeRole 來進入 AWS Console 的

https://ithelp.ithome.com.tw/upload/images/20251009/20163443UsAgvduuYb.png

透過 AnimeRole 測試查詢權限

Step1:首先先登入 Athena 然後選擇 Athena 查詢儲存檔的 S3 Bucket 路徑

https://ithelp.ithome.com.tw/upload/images/20251009/20163443H5e6xEKuaz.png

Step2:再透過使用者 Joe 來新增 AmazonS3FullAccess Policy 給 AnimeRole,讓他擁有讀取 S3 Bucket 的權限

https://ithelp.ithome.com.tw/upload/images/20251009/20163443QGsRk5xoW4.png

Step3:接著使用 Athena 來做查看,可以看到找不到 gold database

這是因為我們還沒賦予 AnimeRole LF-Tags 的權限

https://ithelp.ithome.com.tw/upload/images/20251009/20163443toi5ZqTYOd.png

Step4:透過使用者 Joe 將 db anime LF-Tags 賦予 AnimeRole

  • Principal type:Principals
  • Principals:IAM users and roles
  • IAM users and roles:AnimeRole

https://ithelp.ithome.com.tw/upload/images/20251009/20163443kGIKjzudiK.png

Step5:先選擇 db LF-Tags

https://ithelp.ithome.com.tw/upload/images/20251009/20163443HD8E1Ni4RW.png

Step6:Database 權限選擇

  • 本次只選擇「Describe」來限制 Role 只有查看 DB 的功能,沒有其他功能
  • 然後就可以點選 「Grant」

https://ithelp.ithome.com.tw/upload/images/20251010/20163443mN3jzEMZGx.png

Step7:接著回到 Athena 查看

  • 我們發現已經可以正常看到 gold database
  • 但還是看不到 gold.animes_summary

https://ithelp.ithome.com.tw/upload/images/20251010/201634435tUrVEnrcP.png

Step8:再來我們要來將 table anime LF-Tags 賦予 AnimeRole

  • 一樣透過剛剛的 Grant 方式選擇

https://ithelp.ithome.com.tw/upload/images/20251010/201634433nmTIiNHYN.png

Step9:接著我們要選擇 Table 的權限

  • 選擇 Select、Describe 權限,讓 AnimeRole 擁有查看、讀取的權限
  • 然後就可以點選 「Grant」

https://ithelp.ithome.com.tw/upload/images/20251010/2016344324qjWsKjVl.png

Step10:接著回到 Athena 查看

  • 我們發現已經可以正常看到 gold.animes_summary
  • 並且也可以正常執行 Query 語法

https://ithelp.ithome.com.tw/upload/images/20251010/20163443aoNQoW5SaR.png

透過以上驗證,我們可以發現到,沒有賦予 LF-Tags 權限的 Role 是無法順利查看相對應的 Source 的。

Step11:透過 Data permissions 頁面,我們可以查看各個 Role 相對應的權限。

https://ithelp.ithome.com.tw/upload/images/20251010/201634430TEfODHkBb.png

結論與建議

在本篇的實作中,我們完整驗證了 Lake Formation (LF) 的權限治理流程,
從 LF-Tag 建立、貼標、授權,到使用 AnimeRole 進行實際查詢測試。

過程中可以清楚看到:

階段 狀況 結果
未授權任何 LF-Tags 看不到 gold Database ✅ 權限生效
僅授權 db=anime Tag 能看到 gold Database,但無法查 Table ✅ 權限分層
同時授權 table=anime Tag 能看到並查詢 gold.animes_summary ✅ 權限完整

透過這樣的 Tag-based Governance,我們不再需要針對每個 Table 手動賦予權限,而是透過 LF-Tag 來進行集中管理。

這種做法具備三大優勢:

  1. 高維度治理 (Scalable Governance)
    透過 LF-Tag 可以快速擴展至多部門、多資料域的授權管理。
  2. 安全一致性 (Security Consistency)
    所有查詢服務(Athena、Redshift Spectrum、Glue、EMR)皆會自動遵守 LF 權限設定。
  3. 低維護成本 (Low Operational Cost)
    當新增資料表時,只要貼上正確 LF-Tag,即可自動套用既有權限政策。

建議:在企業環境中導入 Lake Formation 時,應該盡早關閉 IAM-based 權限控制,
讓資料湖的授權邏輯全部由 LF 統一管理,確保資料安全與權限一致性。


下篇預告

在下一篇 「Day26 視覺之章-QuickSight 概念篇」 中,我們要來介紹 AWS BI 服務 QuickSight。

QuickSight 將是 Data Lakehouse 架構中「視覺層治理」的最後一塊拼圖,讓整個分析流程從底層 S3 到報表端 QuickSight,將資料實際建立變成可視化的報表。


參考資料

[1] AWS Lake Formation 官方文件
[2] Athena and Lake Formation Permissions


上一篇
Day24 視覺之章-Lake Formation 概念篇
下一篇
Day26 視覺之章-QuickSight 概念篇
系列文
動漫宅的 30 天 AWS Lakehouse 修行日誌26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言