AWS IAM මූලිකාංග: Users, Roles, Policies, MFA, Identity Center | Sinhala Guide

AWS IAM මූලිකාංග: Users, Roles, Policies, MFA, Identity Center | Sinhala Guide

ආයුබෝවන් යාළුවනේ! AWS IAM Fundamentals සිංහලෙන් ඉගෙන ගනිමු!

අද අපි කතා කරන්න යන්නේ Cloud computing වල, විශේෂයෙන්ම AWS (Amazon Web Services) වල තියෙන ගොඩක්ම වැදගත් කොටසක් ගැන – ඒ තමයි IAM, එහෙමත් නැත්නම් Identity and Access Management. ඔයාලා AWS එක්ක වැඩ කරනවා නම්, මේ IAM කියන එක හරියට තේරුම් ගන්න එක අනිවාර්යයි. මොකද, ඔයාගේ Cloud environment එකේ Security එක තීරණය වෙන්නේ IAM configurations මත. හරියටම කිව්වොත්, IAM කියන්නේ ඔයාගේ Cloud infrastructure එකේ දොරටු පාලකයා වගේ. කවුද ඇතුලට එන්නේ, මොනවටද access කරන්න පුළුවන්, කොයි වෙලාවටද access කරන්න පුළුවන් කියන හැම දේම තීරණය කරන්නේ IAM තමයි.

අද අපි IAM Users, Groups, Roles, Policies වගේ මූලික දේවල් ඉඳලා, MFA, Permission Boundaries, Identity Center වගේ ටිකක් Advanced concepts ගැනත් කතා කරමු. ඒ වගේම, 'Least Privilege Principle' එක මොකක්ද, පොදු IAM Policy වැරදි නිවැරදි කරගන්නේ කොහොමද කියලත් බලමු. එහෙනම්, අපි පටන් ගමු!

1. AWS IAM කියන්නේ මොකක්ද? සහ Least Privilege Principle

සරලව කිව්වොත්, AWS IAM කියන්නේ ඔයාගේ AWS resources (ඒ කියන්නේ S3 buckets, EC2 instances, Lambda functions වගේ දේවල්) වලට කවුද access කරන්නේ, කොහොමද access කරන්නේ, සහ මොනවටද access කරන්න පුළුවන් කියලා manage කරන සේවාව. හිතන්න ඔයාගේ ගෙදරට කවුද එන්න ඕනේ, කවුද එන්න හොඳ නැත්තේ, ඇතුලට ආවොත් මොන කාමරේටද යන්න පුළුවන් වගේ නීති දානවා වගේ දෙයක්. AWS වලදී, මේක කරන්නේ Users, Groups, Roles සහ Policies කියන දේවල් පාවිච්චි කරලා.

Least Privilege Principle

මේක IAM වල මූලිකම සංකල්පයක්. ඒ කියන්නේ, කෙනෙක්ට හරි සේවාවකට හරි තමන්ගේ වැඩේ කරන්න අවශ්‍ය අඩුම access එක විතරක් දෙන්න ඕනේ කියන එක. උදාහරණයක් විදියට, S3 bucket එකකින් data read කරන්න විතරක් අවශ්‍ය කෙනෙක්ට S3 bucket එකට write කරන්න, delete කරන්න වගේ permissions දෙන්නේ නැහැ. මේකෙන් වෙන්නේ, යම් විදියකින් කෙනෙක්ගේ credentials compromise වුනොත්, attackers ලට කරන්න පුළුවන් හානිය අඩු වෙන එක. ඒ වගේම, අනවශ්‍ය විදියට permissions දීලා අත්වැරදීමකින් වැදගත් data modify වෙන එකත් මේකෙන් වළක්වා ගන්න පුළුවන්.

මේ Least Privilege Principle එක හැම වෙලාවෙම මතක තියාගෙන තමයි ඔයාලා IAM configurations කරන්න ඕනේ.

2. IAM Users සහ IAM Groups

IAM Users සහ Groups කියන්නේ AWS resources වලට access කරන මූලිකම Human Identities.

IAM Users

  • කවුද? IAM User කෙනෙක් කියන්නේ ඔයාගේ AWS account එකට sign-in වෙන්න පුළුවන් individual කෙනෙක්ට. ඒ කියන්නේ Developers ලා, QA Engineers ලා, SysAdmins ලා වගේ අයට.
  • මොනවද තියෙන්නේ? හැම User කෙනෙක්ටම තමන්ගේම unique user name එකක්, password එකක් සහ optionally Access Keys (programmatic access සඳහා) තියෙනවා.
  • කොහොමද වැඩ කරන්නේ? Users ලට කෙලින්ම permissions දෙන්න පුළුවන් වුනත්, ඒක best practice එකක් නෙවෙයි. ඒ වෙනුවට, Users ලව Groups වලට දාලා Group එකට permissions දෙන එක තමයි වඩා හොඳ.

IAM Groups

  • කවුද? Group එකක් කියන්නේ IAM Users ලා එකතු කරලා හදපු collection එකක්. එක Group එකකට Users ලා ගොඩක් දාන්න පුළුවන්.
  • මොනවද තියෙන්නේ? Group එකකට කෙලින්ම permissions attach කරන්න පුළුවන්. ඒ Group එකේ ඉන්න හැම User කෙනෙක්ටම ඒ permissions ටික automatically ලැබෙනවා.
  • ඇයි වැදගත්? මේක ගොඩක් වැදගත් වෙන්නේ management එක පහසු කරන නිසා. හිතන්න ඔයාට Developers ලා 100 දෙනෙක් ඉන්නවා කියලා. ඒ හැමෝටම එකම S3 bucket එකකට Read access දෙන්න ඕනේ නම්, එකින් එකාට permissions දෙනවට වඩා Developers කියන Group එකක් හදලා ඒකට permissions දීලා, Developers ලා ඔක්කොම ඒ Group එකට දාන එක ගොඩක් පහසුයි. අලුතින් Developer කෙනෙක් ආවොත් Group එකට add කරනවා. කෙනෙක් ගියාම Group එකෙන් remove කරනවා.

Practical Tip: හැමවිටම Users ලට කෙලින්ම Policies attach කරනවට වඩා, Groups හදලා ඒ Groups වලට Policies attach කරලා, Users ලව ඒ Groups වලට දාන්න. මේකෙන් කාලය ඉතිරි වෙනවා වගේම, Security management එකත් විධිමත් වෙනවා.

3. IAM Policies (JSON Structure)

IAM Policies කියන්නේ permissions documents. ඒ කියන්නේ, මේ policies වලින් තමයි අපි කියන්නේ කවුද, මොනවටද, කොහොමද access කරන්න ඕනේ කියලා. Policies ලියන්නේ JSON format එකෙන්.

Policy Structure එකේ මූලික අංග

බලන්න මේ උදාහරණය:


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-secure-bucket",
        "arn:aws:s3:::my-secure-bucket/*"
      ]
    }
  ]
}
  • Version: මේකෙන් කියන්නේ policy language එකේ version එක. සාමාන්‍යයෙන් මේක "2012-10-17" කියන එක තමයි පාවිච්චි කරන්නේ.
  • Statement: මේක ඇතුලේ තමයි අපි permissions rule එකක් හෝ කිහිපයක් නිර්වචනය කරන්නේ. මේක Array එකක් නිසා එක Statement එකකට වඩා තියෙන්න පුළුවන්.
  • Effect: මේක 'Allow' (දෙන්න) නැත්නම් 'Deny' (වලක්වන්න) වෙන්න පුළුවන්. 'Deny' එක 'Allow' එකට වඩා බලවත් (Deny wins). ඒ කියන්නේ, කෙනෙක්ට එක policy එකකින් 'Allow' කරලා, තව policy එකකින් 'Deny' කරොත්, access එක නැති වෙනවා.
  • Action: මේකෙන් කියන්නේ කරන්න පුළුවන් දේවල්. උදාහරණයක් විදියට s3:GetObject කියන්නේ S3 bucket එකකින් Object එකක් ගන්න (Download කරන්න) කියන එක. s3:ListBucket කියන්නේ Bucket එක ඇතුලේ තියෙන දේවල් list කරන්න කියන එක. මේකත් Array එකක් නිසා Actions ගොඩක් එකතු කරන්න පුළුවන්. * wildcard එක පාවිච්චි කරලා s3:* වගේ හැම S3 action එකක්ම දෙන්නත් පුළුවන්, හැබැයි ඒක Least Privilege Principle එකට පටහැනි නිසා ප්‍රවේශම් වෙන්න ඕනේ.
  • Resource: මේකෙන් කියන්නේ මේ Actions කරන්න පුළුවන් මොන AWS resources වලටද කියන එක. මේකත් Array එකක්. Resources AWS වල identify කරන්නේ ARN (Amazon Resource Name) එකකින්. උදාහරණයේ තියෙන "arn:aws:s3:::my-secure-bucket" කියන්නේ S3 bucket එකකට. "arn:aws:s3:::my-secure-bucket/*" කියන්නේ ඒ bucket එක ඇතුලේ තියෙන හැම object එකකටම. මෙතනත් * පාවිච්චි කරන්න පුළුවන්, "*" වගේ දීලා හැම resource එකකටම access දෙන්න පුළුවන්, ඒත් ඒකත් ප්‍රවේශම් වෙන්න ඕනේ.
  • Condition (Optional): මේකෙන් කියන්නේ මේ policy එක activate වෙන්න ඕනේ මොන වගේ conditions යටතේද කියලා. උදාහරණයක් විදියට, IP address එකක් match වෙනවා නම්, Multi-Factor Authentication (MFA) activate කරලා තියෙනවා නම් වගේ දේවල්.

Policies ප්‍රධාන වශයෙන් දෙවර්ගයක් තියෙනවා:

  • AWS Managed Policies: AWS විසින් හදලා තියෙන policies. උදා: AmazonS3ReadOnlyAccess. මේවා පාවිච්චි කරන්න පහසුයි, හැබැයි ගොඩක් වෙලාවට මේවා ටිකක් over-privileged වෙන්න පුළුවන්.
  • Customer Managed Policies: අපි විසින් අපේ අවශ්‍යතාවලට අනුව හදාගන්න policies. මේවා තවදුරටත් Custom Policies ලෙසත් හඳුන්වනවා. මේවායින් Least Privilege Principle එක maintain කරන්න පුළුවන්.
  • Inline Policies: මේවා කෙලින්ම IAM User, Group, නැත්නම් Role එකකට attach කරනවා. මේවා අනිත් policies වගේ reusable නෑ.

4. IAM Roles

IAM Roles කියන්නේ IAM Users ලට වඩා පොඩ්ඩක් වෙනස් සංකල්පයක්. Role එකක් කියන්නේ AWS සේවාවකට (උදා: EC2 instance එකකට, Lambda function එකකට) නැත්නම් AWS account එකෙන් එලියෙන් ඉන්න කෙනෙක්ට (Federated user, Cross-account user) තාවකාලික permissions දෙන්න පාවිච්චි කරන Identity එකක්.

Users සහ Roles අතර වෙනස

  • IAM User: පුද්ගලයෙක්ට AWS account එකට log වෙලා වැඩ කරන්න දෙන ස්ථීර Identity එකක් (long-term credentials).
  • IAM Role: පුද්ගලයෙක්ට හෝ AWS සේවාවකට අවශ්‍ය වෙලාවට assumable (භාර ගන්න පුළුවන්) තාවකාලික permissions set එකක් (temporary credentials). Role එකක් assumption කරාම, එයට short-term access keys ලැබෙනවා.

IAM Roles භාවිතා කරන අවස්ථා

  • Cross-account access: ඔයාට AWS accounts කිහිපයක් තියෙනවා නම්, එක account එකක User කෙනෙක්ට තව account එකක resources access කරන්න මේ Roles පාවිච්චි කරන්න පුළුවන්.
  • Federated users: Okta, Azure AD වගේ Third-party identity providers වලින් එන Users ලට AWS resources access කරන්නත් Roles පාවිච්චි කරනවා. මේක Single Sign-On (SSO) වලට පදනම.

EC2 instance එකකට S3 bucket එකක් access කරන්න: හිතන්න ඔයාගේ EC2 instance එකක run වෙන application එකකට S3 bucket එකක තියෙන files කියවන්න ඕනේ කියලා. මේකට අපි EC2 instance එකට Role එකක් assign කරනවා. මේ Role එකට S3 bucket එක Read කරන්න අවශ්‍ය permissions තියෙනවා. App එක run වෙනකොට මේ Role එක assume කරලා S3 access කරනවා. මේකෙන් වෙන්නේ Access Keys EC2 instance එක ඇතුලේ hardcode කරන්න අවශ්‍ය නොවීමයි.


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

මේ Trust Policy එකෙන් කියන්නේ ec2.amazonaws.com කියන සේවාවට මේ Role එක assume කරන්න පුළුවන් කියන එක. මේ Role එකට S3 Read permissions attach කරාම, ඒ EC2 instance එකට S3 access කරන්න පුළුවන්.

IAM Roles කියන්නේ AWS security architecture එකේ ගොඩක් වැදගත් කොටසක්. මේවා නිවැරදිව පාවිච්චි කරන එකෙන් ඔයාගේ infrastructure එකේ Security එක ගොඩක් වැඩි වෙනවා.

5. වැඩි ආරක්ෂාවක් සඳහා: MFA, Permission Boundaries, Identity Center (SSO)

IAM වල මූලිකාංග දැනගත්තට විතරක් මදි. ඔයාගේ Cloud environment එක තවත් ආරක්ෂිත කරගන්න මේ Advanced Features ගැනත් දැනගෙන ඉන්න එක වැදගත්.

Multi-Factor Authentication (MFA)

MFA කියන්නේ මොකක්ද? ඔයාගේ AWS account එකට log වෙද්දී, password එකට අමතරව තව authentication method එකක් පාවිච්චි කරන එක. උදාහරණයක් විදියට, phone එකේ තියෙන Authenticator app එකකින් ලැබෙන code එකක්. මේකෙන් වෙන්නේ, attacker කෙනෙක් ඔයාගේ password එක හොරා ගත්තත්, දෙවෙනි factor එක නැතුව account එකට access කරන්න බැරි වීම.

ඇයි වැදගත්? Credential compromise කියන්නේ Cloud security breaches වලට ප්‍රධානම හේතුවක්. MFA activate කරන එකෙන් මේ අවදානම ගොඩක් අඩු කරගන්න පුළුවන්. Root user එකට විතරක් නෙවෙයි, හැම IAM User කෙනෙක්ටම MFA activate කරන්න ඕනේ.

Permission Boundaries

Permission Boundary කියන්නේ මොකක්ද? මේක IAM Policy එකක්. හැබැයි මේකේ විශේෂත්වය තමයි, මේක User කෙනෙක්ට හෝ Role එකකට attach කරාම, ඒ User/Role එකට තියෙන්න පුළුවන් උපරිම permissions ප්‍රමාණය මේ Policy එකෙන් define කරන එක. සරලව කිව්වොත්, මේක ආරක්ෂක වැටක් (guardrail) වගේ.

උදාහරණයක්: හිතන්න ඔයාට Junior Developer කෙනෙක් ඉන්නවා කියලා. ඔයාට ඕනේ නැහැ ඒ කෙනාට production resources වලට modify permissions දෙන්න. ඔයාට පුළුවන් ReadOnlyBoundary වගේ Permission Boundary එකක් හදලා, ඒකෙන් කියනවා ඕනෑම User කෙනෙක්ට තියෙන්න පුළුවන් උපරිම permissions Read-Only කියන එක. ඊට පස්සේ මේ Junior Developer ට FullS3Access වගේ policy එකක් දුන්නත්, Permission Boundary එක ReadOnly නිසා, එයාට ඇත්තටම ලැබෙන්නේ Read-Only access විතරයි. එයාට Modify කරන්න බැහැ.

මේකෙන් වෙන්නේ, ඔයාගේ organisation එකේ standard security guidelines enforce කරන එක. Admin කෙනෙක් අතින් වුනත් අහම්බෙන් over-privileged permissions දෙන එක වළක්වා ගන්න පුළුවන්.

AWS Identity Center (AWS SSO)

Identity Center කියන්නේ මොකක්ද? කලින් AWS SSO (Single Sign-On) කියලා හැඳින්වූ මේ සේවාව, AWS accounts කිහිපයකට සහ Cloud applications වලට (Salesforce, Microsoft 365 වගේ) Users ලට එකම තැනකින් sign-in වෙලා access කරන්න පුළුවන් විදියට හදන centralised identity management සේවාවක්. මේකෙන් වෙන්නේ, User කෙනෙක්ට accounts ගොඩකට වෙන වෙනම usernames/passwords මතක තියාගන්න අවශ්‍ය නොවීමයි.

ප්‍රයෝජන:

  • Simplified User Management: එකම තැනකින් users ලා manage කරන්න පුළුවන්.
  • Single Sign-On (SSO): එක login එකකින් AWS accounts කිහිපයකට සහ third-party apps වලට access.
  • Multi-account strategy: Accounts ගොඩක් තියෙන organisations වලට security සහ management පහසු කරනවා.
  • Integration with external identity sources: Azure AD, Okta වගේ identity providers එක්ක integrate කරන්න පුළුවන්.

ඔයාගේ organisation එකේ AWS accounts කිහිපයක් තියෙනවා නම්, Identity Center පාවිච්චි කරන එක ගොඩක්ම ප්‍රයෝජනවත්.

6. පොදු IAM Policy දෝෂ සහ ඒවා නිවැරදි කිරීම

IAM Policies ලියනකොට ගොඩක් වෙලාවට වැරදි වෙන්න පුළුවන්. මේ වැරදි නිසා Security loopholes ඇති වෙන්න පුළුවන් නැත්නම් අවශ්‍ය access එක නොලැබී යන්න පුළුවන්. පොදු දෝෂ කිහිපයක් සහ ඒවා නිවැරදි කරගන්නා ආකාරය බලමු.

දෝෂ 1: Over-privileged Policies (ඕනවට වඩා permissions දීම)

දෝෂය: "Action": "*" හෝ "Resource": "*" වගේ Wildcard එක ඕනවට වඩා පාවිච්චි කිරීම.


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

මේ policy එකෙන් කියන්නේ S3 එකේ හැම action එකක්ම (read, write, delete, configure) හැම S3 bucket එකකටම කරන්න පුළුවන් කියන එක. මේක Least Privilege Principle එකට සම්පූර්ණයෙන්ම පටහැනියි. යම් විදියකින් මේ policy එක තියෙන User කෙනෙක්ගේ credentials compromise වුනොත්, attacker කෙනෙක්ට ඔයාගේ හැම S3 data එකක්ම විනාශ කරන්න පුළුවන්.

නිවැරදි කිරීම: අවශ්‍ය කරන Action/Resource එක හරියටම specify කරන්න.


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-specific-bucket",
        "arn:aws:s3:::my-specific-bucket/*"
      ]
    }
  ]
}

මේකෙන් වෙන්නේ my-specific-bucket එකට විතරක් කියවන්න පුළුවන් access එක දෙන එක. මේක ගොඩක් ආරක්ෂිතයි.

දෝෂ 2: Implicit Deny නිසා access නැතිවීම

දෝෂය: AWS IAM වල Default behavior එක තමයි Implicit Deny. ඒ කියන්නේ, යම් Action එකක් 'Allow' කරන්න policy එකක් නැත්නම්, ඒ Action එක 'Deny' වෙනවා.

උදාහරණය: ඔයා User කෙනෙක්ට S3 bucket එකකට GetObject access දුන්නා. හැබැයි s3:ListBucket access දුන්නේ නැහැ. එතකොට User කෙනෙක්ට bucket එකේ තියෙන objects list කරන්න බැරි වෙනවා, එයා දන්නා object එකක් direct link එකෙන් ගන්න පුළුවන් වුනත්.

නිවැරදි කිරීම: අවශ්‍ය හැම Action එකක්ම පැහැදිලිව 'Allow' කරන්න. අවශ්‍ය නම් IAM Policy Simulator එක පාවිච්චි කරලා User කෙනෙක්ට තියෙන effective permissions මොනවද කියලා check කරන්න.

දෝෂ 3: Policy Conditions භාවිතා නොකිරීම

දෝෂය: Policy එකක Conditions පාවිච්චි නොකර, ඕනෑම IP address එකකින් හෝ MFA නැතුව access කරන්න ඉඩ දීම.

නිවැරදි කිරීම: වැදගත් resources වලට access දෙනකොට Conditions පාවිච්චි කරන්න.


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::sensitive-data-bucket/*",
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
        },
        "IpAddress": {
          "aws:SourceIp": "203.0.113.0/24"
        }
      }
    }
  ]
}

මේ policy එකෙන් කියන්නේ sensitive-data-bucket එකෙන් object ගන්න පුළුවන් වෙන්නේ MFA activate කරලා, 203.0.113.0/24 කියන IP range එකෙන් access කරන අයට විතරයි කියන එක. මේක Security එක වැඩි කරනවා.

දෝෂ 4: Root User Access Keys පාවිච්චි කිරීම

දෝෂය: AWS account එකේ Root User ගේ Access Keys programmatic access වලට පාවිච්චි කිරීම.

නිවැරදි කිරීම: Root User කියන්නේ ඔයාගේ AWS account එකේ Super User. ඒකට හැම දේටම Full Access තියෙනවා. ඒ නිසා Root User ගේ Access Keys කිසිම වෙලාවක programmatic access වලට පාවිච්චි කරන්න එපා. Root User ගේ Password එක සහ Access Keys දෙකම ආරක්ෂිතව තියාගන්න. ඒ වෙනුවට, IAM Users හදලා, Least Privilege Principle එකට අනුව ඔවුන්ට අවශ්‍ය permissions විතරක් දෙන්න. Root User ට MFA activate කරලා, දිනපතා වැඩ වලට පාවිච්චි නොකර, අවශ්‍යම අවස්ථාවලට විතරක් පාවිච්චි කරන්න.

පොදු උපදෙස්:

  • ඔයාගේ policies review කරන්න IAM Policy Simulator එක පාවිච්චි කරන්න.
  • IAM Access Analyzer එකෙන් over-privileged access identify කරන්න.
  • නිතිපතා IAM User credentials (Access Keys) rotate කරන්න.

නිගමනය: AWS IAM ඔබේ ආරක්ෂක පදනමයි!

ඉතින් යාළුවනේ, මේ tutorial එකෙන් අපි AWS IAM (Identity and Access Management) වල තියෙන මූලිකාංග සහ Security Best Practices ගොඩක් ගැඹුරින් කතා කළා. IAM Users, Groups, Roles වගේම Policies ලියන හැටි, MFA, Permission Boundaries, Identity Center වගේ Advanced concepts ගැනත්, පොදු IAM policy වැරදි නිවැරදි කරගන්න හැටි ගැනත් ඔයාලා දැනුමක් ලබා ගන්න ඇති කියලා මම හිතනවා.

මතක තියාගන්න, AWS Cloud එකේදී ඔයාගේ Security එකේ පදනම තමයි IAM. Least Privilege Principle එක හැම වෙලාවෙම අනුගමනය කරන්න. අනවශ්‍ය permissions නොදෙන්න, MFA activate කරන්න, আর ඔයාගේ policies නිතරම review කරන්න. මේ දේවල් කරන එකෙන් ඔයාට ගොඩක් ආරක්ෂිත Cloud environment එකක් පවත්වාගෙන යන්න පුළුවන්.

මේ ගැන ඔයාලගේ අදහස්, ප්‍රශ්න පහළින් Comment කරන්න. ඔයාලගේ අත්දැකීම් බෙදාගන්න. මේ දැනුම ඔයාලගේ අලුත් AWS project එකකට apply කරලා බලන්න! සුබ දවසක්!