मुख्य सामग्री पर जाएँ

Amazon S3

उद्देश्य

इवेंट नोटिफिकेशन फ़ंक्शनैलिटी और lambda functions के माध्यम से Glasswall Halo API का उपयोग करके Amazon S3 buckets में स्वचालित फ़ाइल सैनिटाइज़ेशन सेट अप करें।

Amazon S3 इंटीग्रेशन गाइड


पूर्वापेक्षाएँ

  • निम्नलिखित permission policies के साथ AWS account और IAM (Identity and Access Management) role:

    • Amazons3fullaccess: S3 buckets बनाने और configure करने के लिए।
    • Amazonsqsfullaccess: trigger करने के लिए उपयोग की जाने वाली SQS queue बनाने और configure करने के लिए।
    • Awslambda_fullaccess: Glasswall Halo को call execute करने वाले lambda function को बनाने और configure करने के लिए।
    • (वैकल्पिक) iamfullaccess: नई function के लिए default execution role बनाने और configure करने के लिए आवश्यक। यदि यह role assign नहीं किया जा सकता है, तो role बनाए जाने का अनुरोध करने के लिए इस guide में दिए गए संबंधित steps का पालन करें और फिर इस पहले से बनाए गए role का उपयोग करें।
  • Glasswall Halo के synchronous API तक authenticated access।


चरण 1 - एक S3 bucket बनाएँ

सबसे पहले, आपको एक S3 bucket बनाना होगा जहाँ source files जोड़ी जाएँगी, और यही उन events का source होगा जो workflow को trigger करते हैं।

  1. AWS management console में लॉग इन करें।

  2. Navigate to the Amazon S3 console by entering “S3” in the search bar or by selecting S3 under the Services > Storage menu.

Awss3 - step 1a

  1. बाएँ नेविगेशन पैन में Buckets चुनें।

  2. Create bucket पर क्लिक करें। Create bucket पेज खुलता है।

Awss3 - step 1b

  1. bucket name के लिए, अपने bucket का एक नाम दर्ज करें। bucket name को:
  • एक partition के भीतर अद्वितीय होना चाहिए। partition regions का एक समूह होता है; AWS में वर्तमान में तीन partitions हैं:aws(Standard regions),aws-cn(China regions), औरaws-us-gov(AWS govcloud (us) regions)।
  • लंबाई 3 से 63 वर्णों के बीच होनी चाहिए।
  • केवल lowercase अक्षरों, संख्याओं, dots (.), और hyphens (-) से मिलकर बने। सर्वोत्तम compatibility के लिए, हम अनुशंसा करते हैं कि आप bucket names में dots (.) का उपयोग न करें, सिवाय उन buckets के जो केवल static website hosting के लिए उपयोग किए जाते हैं।
  • किसी अक्षर या संख्या से शुरू और समाप्त हों।

Bucket names वैश्विक रूप से unique होते हैं, यदि दर्ज किया गया bucket name पहले से उपयोग में है तो AWS console validation आपको सूचित करेगा।

नोट: bucket बनाने के बाद, आप उसका नाम बदल नहीं सकते। Buckets के नामकरण के बारे में अधिक जानकारी के लिए, bucket naming rules देखें।

  1. Region के लिए, वह AWS region चुनें जहाँ आप चाहते हैं कि bucket स्थित हो।

नोट: latency और costs को कम करने तथा regulatory requirements को पूरा करने के लिए, अपने निकट का region चुनें। किसी region में संग्रहीत objects उस region से कभी बाहर नहीं जाते, जब तक कि आप उन्हें स्पष्ट रूप से किसी अन्य region में transfer न करें। Amazon S3 AWS regions की सूची के लिए, amazon web services general reference में AWS service endpoints देखें।

यदि आपको अपने bucket के लिए कोई अतिरिक्त settings चाहिए, जैसे access control, logging, versioning, या encryption, तो आप उन्हें उसी अनुसार configure कर सकते हैं।

इसके अतिरिक्त, set permissions section के अंतर्गत, आप bucket policies, access control lists (ACLs), या block all public access जैसे विकल्प चुनकर यह निर्धारित कर सकते हैं कि bucket और उसके objects तक किसकी पहुँच होगी। आगे बढ़ने से पहले सुनिश्चित करें कि आप अपनी आवश्यकताओं के अनुसार इन configurations की समीक्षा करें और उन्हें सेट करें।

S3 buckets बनाने और configure करने के बारे में अधिक विस्तृत जानकारी के लिए कृपया AWS S3 user guide देखें।


चरण 2 - SQS queue बनाएँ

S3 bucket बनने के बाद, Amazon SQS (Simple Queue Service) queue बनानी होगी। यहीं पर आपके source S3 bucket से event notifications भेजी जाएँगी, और Lambda function उन्हें प्राप्त करेगा।

  1. Navigate to the Amazon SQS console by searching for “SQS” in the search bar or by selecting Simple Queue Service under the Services > Application integration menu.

  2. Create queue पर क्लिक करें।

Awss3 - step 2a

  1. SQS queues के दो प्रकारों में से चुनें: Standard या FIFO

Standard queues उच्च throughput और best-effort ordering प्रदान करती हैं, जबकि FIFO queues message group ID के आधार पर “exactly once” processing और strict ordering की गारंटी देती हैं। डिफ़ॉल्ट रूप से standard queue type सेट होता है।

Note: queue type बन जाने के बाद आप उसे बदल नहीं सकते।

  1. अपनी queue के लिए एक अद्वितीय Name दर्ज करें; उदाहरण के लिए s3cdrevents

एक FIFO queue का नाम .fifo suffix के साथ समाप्त होना चाहिए। यह suffix 80-वर्णों की queue name quota में गिना जाता है। यह निर्धारित करने के लिए कि कोई queue fifo है या नहीं, आप देख सकते हैं कि queue का नाम इस suffix के साथ समाप्त होता है या नहीं।

  1. console queue configuration parameters के लिए default values सेट करता है। यदि आप SQS से परिचित हैं, तो Configuration के अंतर्गत आप parameters के लिए नए values सेट कर सकते हैं। इस use case के लिए, हम इनमें से अधिकांश को default ही रहने देंगे।

  2. Access policy सेक्शन तक स्क्रॉल करें।

  3. S3 service को queue में messages publish करने की अनुमति देने के लिए advanced editor के माध्यम से policy JSON संपादित करने हेतु Advanced विकल्प चुनें।

  4. “__owner_statement” element के बाद एक comma जोड़ें और निम्न JSON snippet पेस्ट करें:

{ 
"Sid": "AllowS3ToPublish",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "sqs:SendMessage",
"Resource": "<ARN-OF-QUEUE>"
}

नोट: सुनिश्चित करें कि snippet में arn-of-queue को queue के ARN (Amazon Resource Name) से बदलें; यह मौजूदा JSON में owner statement के resource ARN के समान होगा।

Awss3 - step 2b

  1. आपने जो configuration values दर्ज किए हैं उनकी समीक्षा करें और Create queue पर क्लिक करें।

बाद में उपयोग के लिए queue के ARN को नोट कर लें।

Amazon SQS बनाने और configure करने के बारे में अधिक विस्तृत जानकारी के लिए कृपया AWS S3 user guide देखें।


चरण 3 - event notifications चालू करें

अगला चरण event notification को चालू करना है, ताकि हर बार जब source S3 bucket में कोई file रखी जाए, आपकी SQS queue को एक notification प्राप्त हो।

  1. Amazon S3 console पर जाएँ और Buckets सूची से वह bucket चुनें जिसे आपने पहले बनाया था।

  2. Bucket overview पेज से Properties टैब चुनें।

  3. नीचे स्क्रॉल करके Event notifications सेक्शन तक जाएँ और Create event notification पर क्लिक करें।

  4. General configuration सेक्शन में, अपनी event notification के लिए एक वर्णनात्मक Event name निर्दिष्ट करें। वैकल्पिक रूप से, आप notifications को उन objects तक सीमित करने के लिए Prefix और Suffix भी निर्दिष्ट कर सकते हैं जिनकी keys निर्दिष्ट वर्णों पर समाप्त होती हैं।

  5. Event types सेक्शन में, आप एक या अधिक event types चुन सकते हैं जिनके लिए आप notifications प्राप्त करना चाहते हैं। इस उदाहरण में हम Object creation events पर ध्यान केंद्रित कर रहे हैं ताकि नए या कॉपी किए गए objects के परिणामस्वरूप notifications उत्पन्न हों, जिनसे object पर CDR लागू किया जाए।

All object create events checkbox चुनें।

Awss3 - step 3a

  1. अंत में, Destination सेक्शन में event notification destination चुनें – इस मामले में वह SQS queue जिसे हमने बनाया और configure किया है।

अपना destination के रूप में SQS queue चुनें और वह SQS queue चुनें जिसे हमने पहले बनाया और configure किया था।

  1. Save changes चुनें, और Amazon S3 event notification destination पर एक test message भेजता है।

Event notification बन जाती है, और आपको S3 bucket properties पर वापस ले जाया जाता है।

Event notifications के बारे में अधिक विस्तृत जानकारी के लिए कृपया AWS S3 user guide देखें।


चरण 4 - Lambda function बनाएँ

जब event notification चालू हो जाए, तो आपको एक नया Lambda function बनाना होगा।

  1. Navigate to the Lambda service by searching for “Lambda” in the search bar or by selecting Lambda under the Services > Compute menu.

  2. बाएँ navigation pane में, Functions चुनें।

  3. Create function पर क्लिक करें।

  4. Create function पेज पर आपको तीन विकल्प दिखाई देंगे; Author from scratch चुनें।

  5. अपने Lambda function के लिए उपयुक्त Function name दर्ज करें; उदाहरण के लिए CDR-file

Awss3 - step 4a

  1. इसके बाद, ऐसा Runtime चुनें जो आपकी इच्छित language से मेल खाता हो।

नोट: आप Glasswall github के माध्यम से sample codes पा सकते हैं। आप बाद के चरण में code upload कर सकेंगे।

  1. (Optional) If you are familiar with Lambda functions, you can set additional configurations via the General configuration option under the Configurations tab.

  2. Create function पर क्लिक करें। आप Function overview पेज पर पहुँचेंगे।

Awss3 - step 4b

  1. Assigning the execution role can be done in two ways:
    • iamfullaccess का उपयोग करके नई role का अनुरोध करना और उसे असाइन करना
    • Assigning an already existing role
      • यह Lambda service के माध्यम से किया जा सकता है: Function overview > Configuration > Permissions > Edit.

[वैकल्पिक] iamfullaccess

यदि आपको iamfullaccess permissions असाइन नहीं की जा सकतीं, तो कृपया निम्न permissions के साथ एक role बनाए जाने का अनुरोध करें:

Logs :createlogstream

Logs :putlogevents

role बनाने के लिए Configure execution role चरण से पूर्ण किया गया JSON अपने privileged users को प्रदान करें।

नई default role बनाए जाने की अनुमति देने के बजाय, इस नई role को Lambda creation user interface से चुना जा सकता है।

  • Change default execution role सेक्शन तक स्क्रॉल करें।
  • Use an existing role चुनें और पहले से बनाई गई role का चयन करें।

अब execution role को configure करने वाला अगला चरण छोड़ा जा सकता है और आप Step 6 - Upload lambda code पर आगे बढ़ सकते हैं।


चरण 5 - execution role configure करें

Lambda function को AWS services (S3, SQS) तक access देने के लिए, आपको Lambda की execution role को अतिरिक्त permissions असाइन करनी होंगी।

  1. AWS Lambda console में, बाएँ navigation pane में Functions चुनें।

  2. अपने Lambda function के details page पर, Configuration tab चुनें, और फिर बाएँ navigation pane में Permissions पर क्लिक करें।

  3. Execution role के अंतर्गत, role name के लिंक को चुनें। IAM console खुल जाएगा।

  4. अपने Lambda function के execution role के लिए IAM console के Summary page पर, Permissions tab चुनें।

  5. Add permissions menu से, Create inline policy चुनें।

  6. JSON editor पर स्विच करें।

  7. नीचे दिए गए snippet में, नीचे वाले section (resource) को उस SQS queue के ARN से बदलें जिसे आपने बनाया था और पिछले step में नोट किया था:

Arn:AWS:sqs:{region}:{account}:{queuename}"

{ 
"Version": "2012-10-17",
"Statement": [
{
"Sid": "UseCaseStatement0",
"Effect": "Allow",
"Action": [
"sqs:DeleteMessage",
"sqs:GetQueueUrl",
"sqs:ReceiveMessage",
"sqs:GetQueueAttributes",
"sqs:ListQueueTags"
],
"Resource": [
"arn:aws:sqs:{Region}:{Account}:{QueueName}"
]
},
{
"Sid": "UseCaseStatement1",
"Effect": "Allow",
"Action": [
"sqs:ListDeadLetterSourceQueues",
"sqs:ListMessageMoveTasks",
"sqs:ListQueues",
"s3:GetObject",
"s3:CreateBucket",
"s3:PutObject"
],
"Resource": "*"
}
]
}
  1. updated resources के साथ snippet को JSON editor में paste करें।

  2. Next पर क्लिक करें।

  3. policy को एक Name दें; उदाहरण के लिए usecasepolicy

  4. Create policy पर क्लिक करें।

अब आपके Lambda function के पास उन services के साथ interact करने की permissions हैं जिनकी आपको आवश्यकता है।


चरण 6 - Lambda code अपलोड करें

जब files को source S3 bucket में upload किया जाता है, तो उन्हें process करने के लिए कुछ code चलाना आवश्यक होता है, जब Lambda invoke किया जाता है।

आपके framework के आधार पर Lambda function को इच्छित code चलाने के कई तरीके हैं, लेकिन यह guide zip upload functionality पर केंद्रित है।

framework चाहे कोई भी हो, Lambda function में निम्नलिखित logic होगा:

  • फ़ाइल प्राप्त करें: source bucket से फ़ाइल प्राप्त करने के लिए SQS message की व्याख्या करें।
  • CDR फ़ाइल: Glasswall Halo Rest API को एक authenticated request भेजें।
  • responses संभालें: सफल और असफल दोनों प्रकार के responses को संभालें।

यदि आपको शुरुआत करने के लिए अधिक जानकारी चाहिए, तो आप Glasswall engineering github पर इस logic को implement करने वाले पूर्ण sample codebases पा सकते हैं। यह repository यहाँ बनाए गए Lambda पर upload करने के निर्देशों सहित sample code प्रदान करती है। इसके अतिरिक्त, पहले से बने zip files भी उपलब्ध हैं जिन्हें आप Lambda function के लिए उपयोग कर सकते हैं। कृपया .md files के भीतर दिए गए निर्देशों को देखें।


चरण 7 - trigger जोड़ें

इस चरण में आप trigger जोड़कर Lambda function को इस प्रकार configure करते हैं कि queue में SQS messages publish होने पर उसे invoke किया जाए।

  1. अपने function के console page के Function overview pane में, Add trigger चुनें।

  2. उपलब्ध triggers की सूची में से SQS चुनें।

  3. पहले बनाई गई SQS queue चुनें और Add पर क्लिक करें।

Awss3 - step 7a

प्रक्रिया अब पूरी हो चुकी है और परीक्षण के लिए तैयार है।


चरण 8 - परीक्षण

अब जब सब कुछ तैयार है, source S3 bucket में एक फ़ाइल upload करें और कुछ ही सेकंड में उसी नाम की एक फ़ाइल clean S3 bucket में दिखाई देगी।

Awss3 - step 8a

Awss3 - step 8b

यह फ़ाइल मूल फ़ाइल की देखने में समान एक साफ़ प्रति है, जिसमें कोई भी जोखिमपूर्ण सामग्री या संरचनात्मक दोष नहीं होते, जिनमें malware शामिल हो सकता है।

Glasswall Halo Portal के माध्यम से पुष्टि करें

  • Glasswall के Clean a file application का उपयोग करके मूल फ़ाइल को प्रोसेस करें।

    • आपकी फ़ाइल को सूचीबद्ध किसी भी जोखिमपूर्ण सामग्री आइटम या संरचनात्मक दोषों के साथ एक risk level दिया जाएगा।
  • Clean a file application में clean S3 bucket से साफ़ की गई फ़ाइल को प्रोसेस करें।

    • फ़ाइल बिना किसी जोखिमपूर्ण सामग्री या संरचनात्मक दोष के साफ़ रूप में वापस आनी चाहिए।