我的一個項目使用了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. 如何啓動具有特定訪問權限的子進程
- 2. AWS IAM授予用戶只讀特定VPC的訪問權限
- 3. 是否有任何方式來限制訪問具有模擬權限的用戶訪問特定文件夾?
- 4. 如何使用java訪問ecod實例上沒有訪問權限的dynamodb,並且具有IAM角色
- 5. Mysql Workbench數據導出,無權訪問具有完全權限的用戶
- 6. 權限訪問
- 7. 訪問權限
- 8. 如何管理用戶訪問權限和用戶權限
- 9. 用戶訪問權限
- 10. 更改具有隻讀訪問權限的PFObject ACL權限
- 11. SharePoint 2007的 - 完全權限訪問
- 12. 的mkdir()完全訪問和權限
- 13. 具有特定權限的Postgresql用戶
- 14. 未定義訪問成員變量的訪問權限(公有或私有)
- 15. MVC 3 - 僅限特定用戶訪問
- 16. 將AWS Elastic Beanstalk IAM角色限制爲對一個應用程序的完全訪問權限
- 17. PDP訪問權限限制
- 18. 以有限政策授予對AWS Lambda服務的訪問權
- 19. 無法定義訪問權限
- 20. 拒絕訪問文件夾具有完全權限
- 21. AzureRM IAM有限訪問
- 22. 如何授予用戶特定時間的訪問權限?
- 23. 允許訪問特定表的DynamoDB控制檯的IAM策略
- 24. 亞馬遜IAM用戶+授予對S3的訪問權限
- 25. 如何授予訪問權限以更改所有SQL表的權限?
- 26. 我們是否可以使用具有訪問權限權限的algolia搜索
- 27. 從Django admin中的特定用戶刪除特定模型的訪問權限,但用戶來自具有該模型的訪問權限的組
- 28. 僅限TFS對特定IP的訪問
- 29. 權限訪問sys.dm_db_index_usage_stats
- 30. 只爲特定用戶設置訪問權限