Atheaのクロスアカウントを試した自分メモ
- データ所有アカウント:999999999999
- Athenaクエリするアカウント:666666666666
6666..でAthenaクエリ
9999..にGlueカタログやS3のオブジェクト
権限設定
S3権限
【データ所有アカウント操作】
"データ所有アカウント"のAthenaでクエリされるS3バケットのバケットポリシーを以下のようにして、"Athenaクエリアカウント"からのアクセス許可しておく
{
"Version": "2012-10-17",
"Id": "Policy1620910711847",
"Statement": [
{
"Sid": "Stmt1620910644611",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::666666666666:root"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::test-bucket-ue",
"arn:aws:s3:::test-bucket-ue/*"
]
}
]
}
Glue権限
【データ所有アカウント操作】
Glueの設定をクリックして、以下のアクセス権限ポリシーを設定し、"Athenaクエリアカウント"からのGlue Data Catalogへのアクセス許可する。(Glueのリソースベースのアクセス許可)
{
"Version" : "2012-10-17",
"Statement" : [ {
"Effect" : "Allow",
"Principal" : {
"AWS" : "arn:aws:iam::666666666666:user/uehara"
},
"Action" : "glue:*",
"Resource" : [ "arn:aws:glue:ap-northeast-1:999999999999:catalog", "arn:aws:glue:ap-northeast-1:999999999999:database/default", "arn:aws:glue:ap-northeast-1:999999999999:table/default/*" ]
} ]
}
IAM権限
【Athenaクエリアカウト操作】
"データ所有アカウント"のデータカタログデータベースやテーブルにアクセス許可を与えるIAMポリシーを作成し、作成したIAMポリシーを操作するIAMユーザー(またはIAMロール)にアタッチする
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "glue:*",
"Resource": [
"arn:aws:glue:us-east-1:999999999999:catalog",
"arn:aws:glue:us-east-1:999999999999:database/default",
"arn:aws:glue:us-east-1:999999999999:table/default/*"
]
}
]
}
Athenaデータカタログとデータソース作成
【Athenaクエリアカウト操作】
Athenaの上部で[データソース]をクリックし、[データソースを接続する]をクリックする
そのまま[次へ]
[別のアカウントのGlue データカタログ]にチェック入れて[次へ]
カタログ名に任意の名前(ここではcrosstest-uehara2)、カタログIDに"データ所有アカウント"のアカウントIDを入れて[登録]をクリック
Athenaでクロスアカウントクエリ
データソースに作成したAthenaデータカタログを選択しクエリ。"データ所有アカウント"のGlueテーブルを使い、"データ所有アカウント"のS3のデータに、"Athenaクエリアカウント"からクエリ出来ている
参考ドキュメント
公式
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/data-sources-glue-cross-account.html
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/security-iam-cross-account-glue-catalog-access.html
補足
aws cliでAthenaのデータカタログを作成する
$ cat tmpcross.json
{
"Description": "Cross-account Glue catalog",
"Name": "ownerCatalog",
"Parameters": {"catalog-id" : "999999999999"},
"Type": "GLUE"
}
$ aws athena create-data-catalog --cli-input-json file://tmpcross.json