簡體   English   中英

限制從 EC2 實例訪問 DynamoDB

[英]Restrict access to DynamoDB from EC2 instance

我有一項服務,我有長期運行的工作。 每個作業都有一個 GUID。 我將有關該作業的信息存儲在 dynamodb 中,並將作業 GUID 用作分區鍵。 每個作業都有一個 EC2 實例(以及在 EC2 實例上運行的一些極其不可信的代碼)。 我想讓與特定作業關聯的 EC2 實例只能訪問與該作業關聯的 dynamodb 中的條目。

我之前嘗試的是使用作業 GUID 標記 EC2 實例,然后使用類似下面的內容將 dynamodb 前導密鑰與 EC2 標記進行比較。

{
    "Sid": "UpdateDynamo",
    "Effect": "Allow",
    "Action": "dynamodb:UpdateItem",
    "Resource": "arn:aws:dynamodb:us-east-1:720911909616:table/test",
    "Condition": {
        "ForAllValues:StringEquals": {
            "dynamodb:LeadingKeys": [
                "${aws:PrincipalTag/job_guid}"
            ]
        }
    }
}

這不起作用,因為“PrincipalTag”指的是 IAM 角色而不是EC2 實例。

對此有什么好的解決方案?

您將無法通過單個策略/角色實現此目的,因為沒有 AWS 范圍內的條件鍵可以評估 EC2 實例的標簽,您可以使用該標簽與dynamodb:LeadingKeys進行比較。

鑒於您的用例,因此我建議為每個作業設置一個無服務器解決方案(可能是一個 Lambda 函數):

  • 創建角色
  • 創建一個策略,只允許dynamodb:UpdateItem用於該特定作業的 GUID
  • 將角色分配給適當的 EC2 實例

暫無
暫無

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

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