7

मैं पहले ही documentation से गुजर चुका हूं और यह मेरे उपयोग-मामले को बारीकी से दर्पण करता है सिवाय इसके कि मैं अपने पहचान प्रदाता के रूप में Google, फेसबुक या अमेज़ॅन का उपयोग नहीं कर सकता, लेकिन मेरे पास पहले से ही है प्रमाणीकृत उपयोगकर्ताओं के लिए एंटरप्राइज़ स्तर OAuth 2.0 एक्सेस टोकन।क्षैतिज सूचना छिपाने के साथ अमेज़ॅन डायनेमो डीबी के साथ ठीक अनाज एक्सेस नियंत्रण

मैं समझता हूं कि मैं अस्थायी प्रमाण-पत्र प्राप्त करने के लिए एडब्ल्यूएस एसटीएस से एंटरप्राइज़ संघीय समर्थन का उपयोग कर सकता हूं और उन्हें एडब्ल्यूएस संसाधनों तक पहुंचने के लिए उपयोग कर सकता हूं लेकिन मुझे यह समझने में असफल रहा कि मैं क्षैतिज जानकारी प्राप्त करने के लिए इन प्रमाण-पत्रों का उपयोग करने के लिए आईएएम नीति को कैसे कॉन्फ़िगर कर सकता हूं छुपा रहे है।

मैं DynamoDB में कुछ तालिकाओं, जिसमें मैं अपने आवेदन के सभी उपयोगकर्ताओं के विवरण की दुकान है और अपने आवेदन कई किरायेदारों तो मैं चाहता हूँ एक किरायेदार के उपयोगकर्ताओं नहीं अन्य किरायेदारों के डेटा का उपयोग करने में सक्षम होने के लिए समर्थन करता है। IAM नीति है कि मैं कॉन्फ़िगर कर सकता है प्रकार का है:

"Condition": { 
      "ForAllValues:StringEquals": { 
       "dynamodb:LeadingKeys": ["${www.amazon.com:user_id}"] 
      } 
     } 

अब मेरी उन नहीं अमेज़न (या गूगल या फेसबुक) के माध्यम से प्रवेश किया हुआ है और इसलिए मैं {तरह "$ www.amazon.com कुंजी का उपयोग नहीं कर सकते : user_id} "आदि। कुछ तालिकाओं के लिए भी हैश कुंजी समग्र हैं।

तो मेरा सवाल है कि डेटाबेस स्तर पर बहु-किरायेदारी कैसे प्राप्त करें और प्रति किरायेदार डेटा को अलग या अलग करने में सक्षम हो, यानी उन उपयोगकर्ताओं से मेरी टेबल की कुछ पंक्तियों को छिपाने के लिए जिन्हें इस पर पहुंच नहीं होनी चाहिए।

क्या आईएएम नीति को परिभाषित करते समय कस्टम नीति चर निर्दिष्ट करना संभव है और रनटाइम पर उनको हल करने का तरीका निर्दिष्ट करें? या किसी अन्य तरीके से हो?

डायनमो में मेरे टेबल वर्तमान में मिश्रित हैश कुंजी है, जो इसलिए मैं इतना है कि मैं क्षैतिज जानकारी छुपा प्राप्त करने के लिए सक्षम होना चाहिए IAM नीति में शासन के कुछ प्रकार निर्दिष्ट कर सकते हैं Tenant_ID और user_id का एक संयोजन कर रहे हैं है?

कृपया मुझे बताएं कि क्या आपको मेरे उपयोग के मामले के बारे में अधिक जानकारी चाहिए।

सादर, Agraj

उत्तर

0

आदेश fine-grained data access in DynamoDB सक्षम करने के लिए आपको DynamoDB IAM नीति में IAM Policy Element Variable निर्दिष्ट करना होगा।

एक ठेठ नीति कुछ ऐसा दिखाई देगा:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "FullAccessToUserItems", 
      "Effect": "Allow", 
      "Action": [ 
       "dynamodb:*" 
      ], 
      "Resource": [ 
       "arn:aws:dynamodb:*:table/*" 
      ], 
      "Condition": { 
       "ForAllValues:StringEquals": { 
        "dynamodb:LeadingKeys": [ 
         "${cognito-identity.amazonaws.com:sub}" 
        ] 
       } 
      } 
     } 
    ] 
} 

कहाँ ${cognito-identity.amazonaws.com:sub} cognito में उपयोगकर्ता के उप का प्रतिनिधित्व एक IAM नीति चर रहा है।

दुर्भाग्यवश अमेज़ॅन उपलब्ध नीति चर की एक सूची प्रकाशित नहीं करता है। इसका मतलब यह है कि यद्यपि आपका उपयोगकर्ता प्रबंधन में अमेज़ॅन के माध्यम से प्रबंधित किया गया ताकि ठीक दाग सुरक्षा को सक्षम किया जा सके। आप अपनी पॉलिसी वैरिएबल को परिभाषित नहीं कर सकते हैं - उन्हें पूर्व-परिभाषित अमेज़ॅन चर होना चाहिए - इसलिए अच्छी तरह से दाग सुरक्षा केवल तभी उपलब्ध होती है जहां आपके उपयोगकर्ता अमेज़ॅन में प्रबंधित होते हैं।

अतिरिक्त रूप से आपकी DynamoDB विभाजन कुंजी को नीति चर से मेल खाना पड़ेगा। उदाहरण के लिए आप टेबल विभाजन कुंजी को कॉग्निटो उप होना होगा।

यदि आपका ओथ टोकन कॉग्निटो से प्राप्त हुआ था तो आप इसे अमेज़ॅन Token Endpoint पर पोस्ट कर सकते हैं, जो आपको एक id_token वापस देगा जिसमें उपयोगकर्ता कोग्निटो सब शामिल है।

+0

उत्तर देने के लिए स्टू धन्यवाद।हालांकि, मैं इसे वर्तमान में सही उत्तर के रूप में स्वीकार नहीं कर सकता क्योंकि मैं इसे आजमा नहीं सकता हूं। मैं 2 साल पहले उस परियोजना से आगे बढ़ गया हूं। यदि कोई और इस उत्तर को सही के रूप में मान्य कर सकता है, तो मुझे इसे सही उत्तर के रूप में स्वीकार करने में खुशी होगी। – Agraj

संबंधित मुद्दे