2017-05-16 11 views
2

私のユーザーはFacebookの基本的なユーザー情報を持っています。ユーザーが自分のレコードだけを更新、削除することができますが、には他のすべてのユーザーの属性への読み取りアクセス権があります。例えば。彼らの名前を参照してください。これを可能にするポリシーを作成するにはどうすればよいですか?これは、シナリオなし1です:DynamoDbのファイングレインアクセス

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "FullAccessToUserItems", 
     "Effect": "Allow", 
     "Action": [ 
      "dynamodb:GetItem", 
      "dynamodb:BatchGetItem", 
      "dynamodb:Query", 
      "dynamodb:PutItem", 
      "dynamodb:UpdateItem", 
      "dynamodb:DeleteItem", 
      "dynamodb:BatchWriteItem" 
     ], 
     "Resource": [ 
      "arn:aws:dynamodb:us-west-2:123456789012:table/Users" 
     ], 
     "Condition": { 
      "ForAllValues:StringEquals": { 
       "dynamodb:LeadingKeys": [ 
         "${graph.facebook.com:id}" 
       ] 
      } 
     } 
    } 
] 

}

答えて

1

ただ、テーブル全体に読み取り権限を持つ別の文を追加します。このような

何か作業をする必要があります:

{ 
    "Sid": "ReadAccess", 
    "Effect": "Allow", 
    "Action": [ 
     "dynamodb:GetItem", 
     "dynamodb:BatchGetItem", 
     "dynamodb:Query" 
    ], 
    "Resource": [ 
     "arn:aws:dynamodb:us-west-2:123456789012:table/Users" 
    ] 
} 

全体方針は次のようになります。下の2番目の声明に注意してください。

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "FullAccessToUserItems", 
     "Effect": "Allow", 
     "Action": [ 
      "dynamodb:GetItem", 
      "dynamodb:BatchGetItem", 
      "dynamodb:Query", 
      "dynamodb:PutItem", 
      "dynamodb:UpdateItem", 
      "dynamodb:DeleteItem", 
      "dynamodb:BatchWriteItem" 
     ], 
     "Resource": [ 
      "arn:aws:dynamodb:us-west-2:123456789012:table/Users" 
     ], 
     "Condition": { 
      "ForAllValues:StringEquals": { 
       "dynamodb:LeadingKeys": [ 
         "${graph.facebook.com:id}" 
       ] 
      } 
     } 
    }, 
    { 
     "Sid": "ReadAccess", 
     "Effect": "Allow", 
     "Action": [ 
      "dynamodb:GetItem", 
      "dynamodb:BatchGetItem", 
      "dynamodb:Query" 
     ], 
     "Resource": [ 
      "arn:aws:dynamodb:us-west-2:123456789012:table/Users" 
     ] 
    } 
] 
}