我的一個項目使用了dynamodb表,但我們在該項目上沒有幾個開發人員。我們想給用戶特定的密鑰和訪問密鑰,以便他們只能使用特定的動態密碼錶。 (一個表僅用於讀取訪問,另一個表用於讀取和寫入訪問)。如何爲用戶定義IAM策略,以便僅對特定的dynamodb表具有程序化完全訪問權限或有限訪問權限?
回答
您可以使用類似於此的IAM策略,並將其連接到您的組或用戶(S):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "StatementForTable1",
"Effect": "Allow",
"Action": [
"dynamodb:Scan",
"dynamodb:Query",
"dynamodb:GetItem",
"dynamodb:BatchGetItem"
],
"Resource": [
"arn:aws:dynamodb:REGION:ACCOUNT:table/Table1"
]
},
{
"Sid": "StatementForTable2",
"Effect": "Allow",
"Action": [
"dynamodb:Scan",
"dynamodb:Query",
"dynamodb:GetItem",
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:PutItem",
"dynamodb:UpdateItem"
],
"Resource": [
"arn:aws:dynamodb:REGION:ACCOUNT:table/Table2"
]
}
]
}
正如陳述here:
以下策略可以附加到IAM組,並授予用戶 以編程方式訪問名稱爲 匹配用戶名稱的DynamoDB表的權限。例如,用戶Bob可以在名爲Bob的表中執行任何 DynamoDB操作。該策略可以附加到 一個包含允許每個管理自己的 DynamoDB表的用戶的組。
所以,你可以設置你的政策如下,如果要授予FULL訪問特定的用戶對一個表:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:AWS-REGION-IDENTIFIER:ACCOUNT-ID-WITHOUT-HYPHENS:table/${aws:username}"
}]
}
使用的IAM策略條件的細粒度訪問控制
例如,我們假設我們想授予限制訪問表中特定屬性的權限:
樣品IAM策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LimitAccessToSpecificAttributes",
"Effect": "Allow",
"Action": [
"dynamodb:UpdateItem",
"dynamodb:GetItem",
"dynamodb:Query",
"dynamodb:BatchGetItem",
"dynamodb:Scan"
],
"Resource": [
"arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:Attributes": [
"UserId",
"TopScore"
]
},
"StringEqualsIfExists": {
"dynamodb:Select": "SPECIFIC_ATTRIBUTES",
"dynamodb:ReturnValues": [
"NONE",
"UPDATED_OLD",
"UPDATED_NEW"
]
}
}
}
]
}
說明:
這部分是讓那相關用戶可以執行的操作。
"Action": [
"dynamodb:UpdateItem",
"dynamodb:GetItem",
"dynamodb:Query",
"dynamodb:BatchGetItem",
"dynamodb:Scan"
],
如在第一樣品中,接入點在內容描述說明。
"Resource": [
"arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
]
這裏,使用關鍵字 'ForAllValues:StringEquals'。指定的用戶 只能請求屬性「UserId」和「TopScore」。
"ForAllValues:StringEquals": {
"dynamodb:Attributes": [
"UserId",
"TopScore"
]
}
的StringEqualsIfExists的定義可以在以下的說明來理解:
在權限策略的StringEqualsIfExists子句確保 以下:
如果用戶指定的選擇參數,那麼它的值必須是 SPECIFIC_ATTRIBUTES。此要求可防止來自 的API操作返回任何不允許的屬性,例如從索引 投影。如果用戶指定了ReturnValues參數,則其值爲 的值必須爲NONE,UPDATED_OLD或UPDATED_NEW。這是必需的 ,因爲UpdateItem操作還會執行隱式讀取操作 以在替換項目之前檢查項目是否存在,並且如果請求可返回 以前的屬性值。以這種方式限制 ReturnValues確保用戶只能讀取或寫入允許的屬性 。 StringEqualsIfExists子句保證在允許的操作的上下文中,只有 這些參數之一 - Select或ReturnValues - 可以根據 請求使用。
"StringEqualsIfExists": {
"dynamodb:Select": "SPECIFIC_ATTRIBUTES",
"dynamodb:ReturnValues": [
"NONE",
"UPDATED_OLD",
"UPDATED_NEW"
]
}
你可以找到完整的樣本here。
- 1. AWS IAM授予用戶只讀特定VPC的訪問權限
- 2. 如何爲具有特定條件的用戶授予訪問權限?
- 3. Mysql Workbench數據導出,無權訪問具有完全權限的用戶
- 4. 如何管理用戶訪問權限和用戶權限
- 5. 用戶訪問權限
- 6. SharePoint 2007的 - 完全權限訪問
- 7. 的mkdir()完全訪問和權限
- 8. 未定義訪問成員變量的訪問權限(公有或私有)
- 9. MVC 3 - 僅限特定用戶訪問
- 10. 以有限政策授予對AWS Lambda服務的訪問權
- 11. 無法定義訪問權限
- 12. AzureRM IAM有限訪問
- 13. 權限訪問sys.dm_db_index_usage_stats
- 14. 只爲特定用戶設置訪問權限
- 15. 線程訪問權限
- 16. Android應用程序的權限訪問
- 17. 授予用戶權限來訪問表
- 18. 設置IAM用戶/角色的跨賬戶訪問權限
- 19. 如何在給予註冊用戶完全訪問權限的同時限制未註冊用戶的訪問?
- 20. 如何授予對特定資源的訪問權限?
- 21. 如何管理戶外訪問權限
- 22. 如何創建具有訪問權限檢查的列表
- 23. 用戶訪問權限檢查特定數據庫對象或記錄的權限
- 24. 檢查不同組中的特定用戶的訪問權限
- 25. 獲取哪些用戶具有管理員權限的帳戶(具有OAuthV2訪問權限)的API是什麼?
- 26. 用戶訪問權限或Web應用程序特徵的權限模式或最佳做法
- 27. 我如何使用.htaccess限制所有訪問權限,但允許訪問權限?
- 28. 授予用戶訪問特定/後續文章的權限?
- 29. 權限被拒絕,但我有權限訪問
- 30. SQL Server - 訪問具有高權限用戶的sys.views