簡體   English   中英

AWS:使用boto3檢索具有交叉賬戶訪問權限的S3存儲桶的列表的Python腳本

[英]AWS : Python Script to Retrieve list of S3 bucket having Cross account access using boto3

有什么方法可以使用boto3檢查哪個存儲桶具有交叉帳戶訪問權限? 如果不是,請建議其他方法執行此操作(僅使用腳本)。

我有多個AWS帳戶。 例如:prod,dev,QA,rep1等...我正在使用循環訪問每個帳戶並創建具有交叉帳戶訪問權限的存儲桶列表。

這是一個很難回答的問題,因為一個帳戶或多個帳戶可能可以訪問存儲桶。 實際上,這取決於每個存儲桶中存儲桶策略的內容。

如果您已阻止公共訪問,則只有在存儲桶策略允許的情況下,其他帳戶才能訪問該存儲桶。

看起來IAM策略模擬器 (也具有API)不支持跨帳戶測試,因此這顯然不是一種選擇。

您唯一的選擇是解析每個存儲桶策略,以確定要提供的訪問權限。

另外,您還需要確定“具有訪問權限”的含義。 通常, GetObject是能夠下載對象的測試,但策略也可能授予列出存儲桶內容,上傳到存儲桶等的權限。

謝謝約翰,我創建了以下腳本,以根據存儲桶策略檢查具有交叉帳戶訪問權限的存儲桶。 但不確定天氣是否足夠或需要在腳本中進行更多驗證

import boto3
import json

REGIONS = 'ap-south-1'
ACCOUNT = '*************'
AWS_ACCESS_KEY_ID = '*******************'
AWS_SECRET_ACCESS_KEY = '*****************************'
client = boto3.client('s3', REGIONS, aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
flag = "cross account access -- no"
try:
    result = client.get_bucket_policy(Bucket='testingcrossaccount')
    policy = json.loads(result['Policy'])
    statements = policy['Statement']
    for statement in statements:
        effect = statement['Effect']
        principal = statement['Principal']
        try:
            keywords = principal['AWS']
            if isinstance(keywords, str):
                keywordarr = keywords.split(":")
                if (ACCOUNT != keywordarr[4] and effect == "Allow"):
                    flag = "cross account access -- yes"
            elif isinstance(keywords, list):
                for key in keywords:
                    keywordarr = key.split(":")
                    if (ACCOUNT != keywordarr[4] and effect == "Allow"):
                        flag = "cross account access -- yes"
                        break                   
            if (flag == "cross account access -- yes"):
                break
        except:
            if (principal == "*" and effect == "Allow"):
                flag = "cross account access -- yes"
 except:
    flag = "cross account access -- no"

print (flag)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM