मुझे समझने में समस्या हो रही है कि Cognito उपयोगकर्ता पूल का उपयोग करते समय लॉग इन करते समय डायनेमो डीबी पर बढ़िया पहुंच नियंत्रण का उपयोग कैसे करें। मैंने दस्तावेज़ों का पालन किया है और चारों ओर गुमराह किया है, लेकिन किसी कारण से मैं इसे काम नहीं कर पा रहा हूं।Cognito उपयोगकर्ता पूल के साथ DynamoDB ठीक दागदार पहुंच नियंत्रण का उपयोग कैसे करें?
मेरा एडब्ल्यूएस सेटअप नीचे सूचीबद्ध है। यदि मैं भूमिका नीति में स्थिति को हटा देता हूं, तो मैं आइटम को कोई समस्या नहीं ले सकता और डाल सकता हूं, इसलिए ऐसा लगता है कि स्थिति समस्या है। लेकिन मैं यह नहीं समझ सकता कि प्रमाणीकृत पहचानों पर निर्भर नीतियों को कैसे डिबग करना है या नहीं - कौन से चर उपलब्ध हैं, उनके मूल्य क्या हैं, इत्यादि।
किसी भी मदद की सराहना की जाएगी!
DynamoDB तालिका
- तालिका नाम: दस्तावेजों
- प्राथमिक विभाजन कुंजी: userID (स्ट्रिंग)
- प्राथमिक तरह कुंजी: डाक आईडी (स्ट्रिंग)
DynamoDB उदाहरण पंक्ति
{
"attributes": {},
"docID": "0f332745-f749-4b1a-b26d-4593959e9847",
"lastModifiedNumeric": 1470175027561,
"lastModifiedText": "Wed Aug 03 2016 07:57:07 GMT+1000 (AEST)",
"type": "documents",
"userID": "4fbf0c06-03a9-4cbe-b45c-ca4cd0f5f3cb"
}
cognito उपयोगकर्ता पूल उपयोगकर्ता
- उपयोगकर्ता स्थिति: सक्षम/पुष्टि
- एमएफए स्थिति: विकलांग
- उप: 4fbf0c06-03a9-4cbe-b45c-ca4cd0f5f3cb
- email_verified: सच
"रोलनाम" के लिए भूमिका नीति
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem"
],
"Resource": [
"arn:aws:dynamodb:ap-southeast-2:NUMBER:table/documents"
],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": [
"${cognito-identity.amazonaws.com:sub}"
]
}
}
}
]
}
लॉग इन जानकारी cognitoUser.getUserAttributes()
attribute sub has value 4fbf0c06-03a9-4cbe-b45c-ca4cd0f5f3cb
attribute email_verified has value true
attribute email has value ****@****com
त्रुटि संदेश से लौटे
Code: "AccessDeniedException"
Message: User: arn:aws:sts::NUMBER:assumed-role/ROLE_NAME/CognitoIdentityCredentials is not authorized to perform: dynamodb:GetItem on resource: arn:aws:dynamodb:ap-southeast-2:NUMBER:table/documents
बहुत बहुत धन्यवाद! उन लोगों के लिए जिन्हें किशोरावस्था थोड़ा अधिक मार्गदर्शन की आवश्यकता होती है, जब कोई उपयोगकर्ता कॉग्निटो पहचान पूल का उपयोग करने में लॉग इन करता है, तो IAM में स्ट्रिंग $ {cognito-identity.amazonaws.com:sub} 'AWS.config.credentials में मिले मान को हल करेगा। पहचान आईडी '(जो कुछ हमें' us-east-1: ######## - #### - #### - #### - ########### # ')। – abbm
मुझे http://stackoverflow.com/questions/40446680/aws-iam-using-conditionals?noredirect=1#comment68139618_40446680 में वर्णित समान समस्या का सामना करना पड़ रहा है। मेरी प्राथमिक कुंजी कोग्निटो आईडी के समान है लेकिन मुझे अभी भी अनधिकृत त्रुटि मिल रही है। – achin
@ खेतान मेहता: क्या आप जानते हैं कि 'cognitoIdentityId' का उपयोग करने के लिए कार्यान्वयन पर योजना बनाई गई है? मेरे उपयोग के मामले में, मैं 'cognitoIdentityId' का उपयोग डायनेमोडीबी में हैशकी के रूप में करता हूं और यह मेरी नीतियों में स्थितियों के लिए प्रतिस्थापन चर के रूप में 'cognitoIdentityId' के साथ' dynamodb: LeadingKeys' का उपयोग करने के लिए' सुरक्षा बिंदु से) अच्छा होगा (समान रूप से "अमेज़ॅन डाइनेमो डीबी के लिए ठीक-ठीक पहुंच": http://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html)। – Tom