簡體   English   中英

Cognito用戶的AWS IoT通用策略與策略

[英]AWS IoT Universal Policy vs Policies by Cognito User

我想知道是否有人對AWS IoT關於策略處理的最佳實踐有所了解,例如,我們可能有兩種不同的情況:

情況1:調用lambda(identity-id as param),動態創建策略,然后將策略附加到身份ID。 該策略將包含硬編碼的名稱,例如:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:us-west-2:XXXX:client/hardcodedClient1"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish",
        "iot:Subscribe",
        "iot:Receive"
      ],
      "Resource": [
        "arn:aws:iot:us-west-2:XXXX:topic/$aws/things/THINGNAME1/*",
        "arn:aws:iot:us-west-2:XXXX:topicfilter/$aws/things/THINGNAME1/*"
      ]
    }
  ]
}

案例2:通過使用${iot:ClientId}${iot:ThingName}等策略變量,我們可以將一個策略附加到所有congito-identity-users;

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:us-west-2:XXXX:client/${iot:ClientId}"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish",
        "iot:Subscribe",
        "iot:Receive"
      ],
      "Resource": [
        "arn:aws:iot:us-west-2:XXXX:topic/$aws/things/${iot:Connection.Thing.ThingName}/*",
        "arn:aws:iot:us-west-2:XXXX:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/*"
      ]
    }
  ]
}

所以,問題是。 哪個是最佳實踐,但是它們都是安全的,因為Cognito用戶只能與自己的設備進行交互?

使用策略變量的情況2是推薦的方法。

它減少了要處理的策略數量,並使它們保持有意義和可重用。 從好的方面來說,每次不使用lambda和創建策略會節省一些額外的錢和時間!

就安全性而言,它與策略中的策略變量無關,它最終是什么動作策略允許或拒絕作為策略變量在運行時根據誰嘗試進行操作而在其之后是相同的作為你的硬編碼政策。

案例2更好。 您還可以使用具有適當IAM策略的Cognito Federated Pool實施身份驗證機制,並在您的IoT策略中使用具有適當權限的${cognito-identity.amazonaws.com:sub}變量(只需記住將此策略附加到Cognito identityId )。

如果您的客戶端從瀏覽器連接,最好不要使用iot:ClientId因為clientId必須是唯一的,因此用戶將無法打開多個瀏覽器選項卡。

暫無
暫無

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

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