IAM के साथ सेवा एक्सेस अधिकृत करना

AWS पर एप्लिकेशन डिप्लॉय करना

Dunieski Otano

Amazon Web Services Solutions Architect

कमिट में की

  • एक long-lived access key repo में कमिट हो गया
  • एक स्कैनर बॉट उसे पाता है और बिल बढ़ा देता है
  • Roles और least privilege इसे रोकते हैं

कोड कमिट में गलती से लीक हुई AWS access key, सुरक्षा जोखिम के रूप में फ़्लैग की गई

AWS पर एप्लिकेशन डिप्लॉय करना

IAM principals: users, roles, और policies

IAM तीन-स्तम्भ चित्र: बाएँ पर Principal (user, service, या role), बीच में Allow/Deny actions वाला Policy दस्तावेज़, दाएँ पर अस्थायी short-lived credentials वाला IAM Role

  • Principal: अनुरोध कौन कर रहा है
  • Policy: अनुमति देने वाला JSON दस्तावेज़
  • Role: अनुमतियों का सेट जिसे कोई entity assume कर सकती है
  • Roles assume किए जाते हैं; users के पास long-lived credentials होते हैं
AWS पर एप्लिकेशन डिप्लॉय करना

Programmatic credentials का सही तरीका

  • Lambda: execution role अनुमतियाँ देता है
  • EC2: instance profile role credentials देता है
  • ECS: task roles से प्रति-task permissions scoped होते हैं
  • कोड या config में long-lived access keys नहीं

तीन AWS compute सेवाएँ roles के साथ, बिना long-lived keys: Lambda execution role, EC2 instance profile, और ECS task role, सभी में automatic credential rotation दिखाया गया है

AWS पर एप्लिकेशन डिप्लॉय करना

AssumeRole और STS

  • STS AssumeRole: किसी role के लिए अस्थायी credentials लें
  • cross-account एक्सेस के लिए उपयोग होता है
  • Trust policy तय करती है कौन role assume कर सकता है
  • Credentials short-lived होते हैं और अपने-आप expire होते हैं

STS AssumeRole cross-account फ्लो: Account A में caller STS से credentials माँगता है, Account B के role पर trust policy अनुमति देती है, STS short-lived credentials लौटाता है जो auto-expire होते हैं

AWS पर एप्लिकेशन डिप्लॉय करना

Least privilege और policy संरचना

एक policy statement में तीन आवश्यक भाग होते हैं (Effect, Action, और Resource), साथ में एक वैकल्पिक Condition:

{
  "Effect": "Allow",
  "Action": "dynamodb:PutItem",
  "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
  "Condition": {
    "Bool": { "aws:SecureTransport": "true" }
  }
}
AWS पर एप्लिकेशन डिप्लॉय करना

जहाँ IAM रुकता है और आपका कोड शुरू होता है


IAM: service layer

  • AWS API calls अधिकृत करता है: क्या यह role यह operation कॉल कर सकता है?
  • per-tenant या per-record नियम लागू नहीं कर सकता

आपका कोड: data layer

  • प्रमाणित user को अनुरोधित डेटा से मिलान करता है
  • दोनों का उपयोग करें: IAM सेवा को सुरक्षित रखता है, आपका कोड डेटा को
AWS पर एप्लिकेशन डिप्लॉय करना

व्यवहार में least-privilege execution role

न्यूनतम Lambda execution role: केवल एक तालिका ARN पर DynamoDB PutItem की एकल अनुमति, action या resource पर कोई wildcard नहीं

  • एक Lambda को एक DynamoDB तालिका में लिखना है
  • केवल उस तालिका के ARN पर dynamodb:PutItem दें
  • Action या resource पर कोई wildcard नहीं
  • केवल तभी और जोड़ें जब कोई वास्तविक कॉल deny हो
AWS पर एप्लिकेशन डिप्लॉय करना

अभ्यास करते हैं!

AWS पर एप्लिकेशन डिप्लॉय करना

Preparing Video For Download...