2014-02-21 59 views
4

我試圖使用IAM過濾DynamoDB管理UI中的表名稱列表。通過DynamoDB中的IAM過濾表的列表管理界面

當我使用這個策略時,它會顯示所有表:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "XXXXXXX", 
     "Effect": "Allow", 
     "Action": [ 
     "dynamodb:DescribeTable", 
     "dynamodb:ListTables" 
     ], 
     "Resource": [ 
     "*" 
     ] 
    } 
    ] 
} 

當我使用這個政策它說明不了什麼(只是「未授權」消息):

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "XXXXXXX", 
     "Effect": "Allow", 
     "Action": [ 
     "dynamodb:DescribeTable", 
     "dynamodb:ListTables" 
     ], 
     "Resource": [ 
     "us-east-1:XXXXXXXXXXX:table/table_to_show" 
     ] 
    } 
    ] 
} 

任何人都知道,如果這是可能?

回答

2

看起來您需要以此格式更改Dynamo數據庫表的ARN。

「資源」: 「阿爾恩:AWS:dynamodb:美西2:123456789012:表/書籍」

Using IAM to Control Access to DynamoDB Resources

另一點:要在管理控制檯中列出某些內容,您需要比Describe和列表更多的權限,因爲該列表顯示了屬性等。嘗試添加所有這些內容(這將在特定表中實際完全讀取)。

  "dynamodb:ListTables", 
      "dynamodb:DescribeTable", 
      "dynamodb:GetItem", 
      "dynamodb:BatchGetItem", 
      "dynamodb:Query", 
      "dynamodb:Scan" 
+0

謝謝,但ARNs格式正確 - 它們適用於其他任何事情。我已經在示例中列出了我的詳細信息。 – dwb

+0

我在上面的答案中增加了一些信息 - 試一試。 –

3

您的保單有兩個問題。

正如指出了上述評論的URN是錯誤的,應該開始與dynamoDB arn:aws:dynamodb:*

ListTables操作不允許在資源級別從AWS Documentation You can use resource-level ARNs in IAM policies for all DynamoDB actions, with the exception of ListTables. The ListTables action returns the table names owned by the current account making the request for the current region; it is the only DynamoDB action that does not support resource-level ARN policies. 所以訪問 引用它,你嘗試任何其他操作,它會通過像DescribeTable

解決方案是,你應該添加一個政策只爲ListTables操作與"Resource":["*"]

+0

謝謝你的回答。我試圖阻止用戶看到所有的表名,所以根據文檔中的引用,似乎不可能。 – dwb