lAM Conditions
Đoạn json này là một đoạn mã JSON được sử dụng để định nghĩa một chính sách IAM (Identity and Access Management) trên nền tảng của Amazon Web Services (AWS). Chính sách này có tác dụng cấm một số hoạt động truy cập tài nguyên (Resource) trên AWS cho các địa chỉ IP (Source IP) nằm trong phạm vi mạng “192.0.2.0/24” và “203.0.113.0/24”.
Cụ thể, chính sách này có các thuộc tính sau:
- Effect: Chỉ định tác động của chính sách. Trong trường hợp này, tác động là “Deny” – cấm truy cập.
- Action: Chỉ định các hoạt động (Action) được cấm trong chính sách. Trong trường hợp này, không có hoạt động nào được cấm cụ thể được đề cập.
- Resource: Chỉ định tài nguyên (Resource) mà chính sách được áp dụng. Trong trường hợp này, không có tài nguyên cụ thể nào được đề cập, do đó chính sách sẽ ảnh hưởng đến tất cả các tài nguyên.
- Condition: Chỉ định các điều kiện để chính sách được áp dụng. Trong trường hợp này, điều kiện là “NotIpAddress” – chỉ áp dụng chính sách cho các địa chỉ IP không nằm trong danh sách được liệt kê (trong phạm vi “192.0.2.0/24” và “203.0.113.0/24”).
Vì vậy, chính sách này sẽ cấm truy cập đối với các địa chỉ IP nằm trong phạm vi “192.0.2.0/24” và “203.0.113.0/24”, nhưng cho phép truy cập cho các địa chỉ IP khác.
aws: SourcelP: restrict the client IP from which the API calls are being made
Đoạn json này là một đoạn mã JSON được sử dụng để định nghĩa một chính sách IAM (Identity and Access Management) trên nền tảng của Amazon Web Services (AWS). Chính sách này có tác dụng cho phép một số hoạt động truy cập vào các tài nguyên (Resource) trên AWS, chỉ khi yêu cầu truy cập đó được thực hiện từ các vùng khu vực (Regions) nằm trong phạm vi “eu-central-1” hoặc “eu-west-1”.
Cụ thể, chính sách này có các thuộc tính sau:
- Version: Chỉ định phiên bản của cú pháp chính sách. Trong trường hợp này, phiên bản là “2012-10-17”.
- Statement: Chỉ định một tuyên bố (Statement) trong chính sách IAM. Trong trường hợp này, chỉ có một tuyên bố được định nghĩa.
- Sid: Định danh cho tuyên bố. Trong trường hợp này, định danh là “AllowOnlyInsideEU”.
- Effect: Chỉ định tác động của chính sách. Trong trường hợp này, tác động là “Allow” – cho phép truy cập.
- Action: Chỉ định các hoạt động (Action) được phép trong chính sách. Trong trường hợp này, các hoạt động được phép bao gồm tất cả các hoạt động trên các dịch vụ “ec2”, “rds”, và “dynamodb”.
- Resource: Chỉ định tài nguyên (Resource) mà chính sách được áp dụng. Trong trường hợp này, tất cả các tài nguyên đều được áp dụng chính sách.
- Condition: Chỉ định các điều kiện để chính sách được áp dụng. Trong trường hợp này, điều kiện là “StringEquals” – chỉ áp dụng chính sách cho các yêu cầu truy cập từ các vùng khu vực (Regions) nằm trong danh sách được liệt kê (trong phạm vi “eu-central-1” và “eu-west-1”).
Vì vậy, chính sách này sẽ cho phép thực hiện các hoạt động trên các tài nguyên “ec2”, “rds”, và “dynamodb” trên AWS, chỉ khi yêu cầu truy cập được thực hiện từ các vùng khu vực nằm trong phạm vi “eu-central-1” hoặc “eu-west-1”. Các yêu cầu truy cập từ các vùng khu vực khác sẽ bị cấm.
Aws:RequestedRegion: restrict the region The API calls are made to
Đoạn json này là một chính sách IAM (Identity and Access Management) trên nền tảng của Amazon Web Services (AWS), được viết bằng định dạng JSON. Chính sách này có tác dụng cho phép các hoạt động khởi động (Start), dừng (Stop) và truy vấn (Describe) các instances của dịch vụ Elastic Compute Cloud (EC2) trên AWS, chỉ khi các instances đó có các tags (nhãn) nhất định, được định nghĩa bởi các điều kiện (Conditions) trong chính sách.
Cụ thể, chính sách này có các thuộc tính sau:
- Version: Chỉ định phiên bản của cú pháp chính sách. Trong trường hợp này, phiên bản là “2012-10-17”.
- Statement: Chỉ định một danh sách các tuyên bố (Statements) trong chính sách IAM. Trong trường hợp này, danh sách chỉ có một tuyên bố được định nghĩa.
- Sid: Định danh cho tuyên bố. Trong trường hợp này, định danh là “StartStopIfTags”.
- Effect: Chỉ định tác động của chính sách. Trong trường hợp này, tác động là “Allow” – cho phép truy cập.
- Action: Chỉ định các hoạt động (Action) được phép trong chính sách. Trong trường hợp này, các hoạt động được phép bao gồm khởi động (StartInstances), dừng (StopInstances) và truy vấn (DescribeTags) các instances của dịch vụ EC2.
- Resource: Chỉ định tài nguyên (Resource) mà chính sách được áp dụng. Trong trường hợp này, chính sách sẽ áp dụng cho tất cả các instances thuộc về tài khoản (Account) trong vùng khu vực (Region) được chỉ định, có tên là “region”, và có các tên prefix của tên instances là “inte/*”.
- Condition: Chỉ định các điều kiện để chính sách được áp dụng. Trong trường hợp này, có hai điều kiện được chỉ định:
- Điều kiện đầu tiên (StringEquals) yêu cầu các instances có tag (nhãn) “Project” với giá trị là “DataAnalytics”.
- Điều kiện thứ hai yêu cầu các instances có tag “Department” với giá trị là “Data”.
Vì vậy, chính sách này sẽ cho phép các hoạt động khởi động, dừng và truy vấn các instances của dịch vụ EC2 trên AWS, chỉ khi các instances đó được đánh dấu với các tags “Project” và “Department
Restrict based on tags
Đoạn json này là một cấu hình định nghĩa chính sách phân quyền truy cập trên Amazon Web Services (AWS). Nó có hai phần tường minh: phần “AllowAllActionsForEC2” cho phép tất cả các hành động trên các tài nguyên EC2, và phần “DenyStopAndTerminatWhenFs” từ chối các hành động StopInstances và TerminateInstances trên tất cả các tài nguyên.
Trong phần “AllowAllActionsForEC2”, các hành động được phép bao gồm tất cả các hành động trên các tài nguyên EC2. Phần “Resource” được đặt là “*” cho biết tất cả các tài nguyên EC2 đều được phép.
Trong phần “DenyStopAndTerminatWhenFs”, các hành động StopInstances và TerminateInstances bị từ chối trên tất cả các tài nguyên. Phần “Resource” cũng được đặt là “*”, cho biết tất cả các tài nguyên EC2 đều bị từ chối. Phần “Condition” bao gồm một tùy chọn “BoolIfExists”, cho biết Multi-Factor Authentication (MFA) không được yêu cầu để thực hiện các hành động này.
Force MFA
Đoạn json dưới là một cấu hình định nghĩa chính sách phân quyền truy cập trên Amazon S3 (Simple Storage Service) của AWS. Nó có hai phần tường minh: phần đầu tiên cho phép một user hoặc role được phép liệt kê danh sách các bucket trên S3, và phần thứ hai cho phép người dùng được phép thực hiện các hành động PutObject, GetObject, và DeleteObject trên các đối tượng trong một bucket cụ thể được gọi là “test”.
Phần đầu tiên bao gồm “Effect” là “Allow” để cho phép quyền truy cập. “Action” bao gồm một hành động duy nhất là “s3:ListBucket”, cho phép liệt kê danh sách bucket. “Resource” được chỉ định bằng ARN (Amazon Resource Name) của bucket cụ thể được phép truy cập, ở đây là “arn:aws:s3:::test”.
Phần thứ hai cũng có “Effect” là “Allow”. “Action” bao gồm các hành động PutObject, GetObject và DeleteObject. “Resource” được chỉ định bằng ARN của các đối tượng trong bucket “test”, được ký hiệu bằng “arn:aws:s3:::test/*”. Điều này cho phép người dùng được phép thực hiện các hành động trên tất cả các đối tượng trong bucket “test”.
IAM for S3
Trong phần cấu hình trên, “ListBucket” là một hành động áp dụng cho cấp độ bucket, trong khi “GetObject”, “PutObject” và “DeleteObject” là các hành động áp dụng cho cấp độ đối tượng.
Cụ thể, phần đầu tiên trong cấu hình cho phép user được phép liệt kê danh sách các bucket trên S3 bằng hành động “ListBucket”. Hành động này áp dụng cho toàn bộ bucket được chỉ định trong ARN: “arn:aws:s3:test”.
Phần thứ hai trong cấu hình cho phép user được phép thực hiện các hành động “GetObject”, “PutObject” và “DeleteObject” trên các đối tượng trong bucket được chỉ định trong ARN: “arn:aws:s3:test/*”. Điều này cho phép user thực hiện các hành động này trên toàn bộ các đối tượng trong bucket “test”. Vì vậy, đây là một quyền truy cập cấp độ đối tượng (object-level permission).
IAM Roles vs Resource Based Policies
IAM Roles và Resource-Based Policies là 2 cách để quản lý quyền truy cập tài nguyên trong AWS.
- IAM Roles được sử dụng khi cần cung cấp quyền truy cập từ 1 tài khoản AWS đến một tài nguyên trong tài khoản AWS khác. Khi người dùng sử dụng role, họ sẽ bị giới hạn quyền truy cập của role đó và không thể truy cập vào các quyền hạn ban đầu của mình.
- Resource-Based Policies là một cách để gán quyền truy cập trực tiếp cho tài nguyên AWS. Ví dụ: một S3 bucket policy có thể được sử dụng để cho phép người dùng từ tài khoản AWS khác truy cập vào bucket của bạn mà không cần sử dụng role.
Trong trường hợp cần truy cập vào tài nguyên trong tài khoản khác, người dùng có thể sử dụng cả hai cách để đạt được mục đích. Sử dụng Resource-Based Policies cho phép giữ nguyên quyền hạn ban đầu của người dùng, trong khi sử dụng IAM Roles cho phép người dùng giới hạn quyền truy cập của mình khi truy cập vào tài nguyên của tài khoản khác. Các chính sách Resource-Based được hỗ trợ bởi nhiều dịch vụ AWS, bao gồm S3 buckets, SNS topics, SQS queues, vv.
Amazon EventBridge Security
Amazon EventBridge là một dịch vụ quan trọng trong hệ sinh thái của AWS, cung cấp khả năng tương tác và xử lý các sự kiện được phát sinh trên hệ thống AWS và các ứng dụng bên ngoài. Khi một quy tắc (rule) được thực thi trên EventBridge, nó sẽ cần quyền truy cập đối với các tài nguyên mục tiêu được xử lý trong quy tắc đó.
Để cấp quyền cho các tài nguyên mục tiêu, AWS hỗ trợ hai phương pháp chính là: resource-based policy và IAM role. Phương pháp resource-based policy được sử dụng cho các tài nguyên như Lambda, SNS, SQS, CloudWatch Logs, API Gateway, trong đó các quyền được gán trực tiếp cho tài nguyên đó. Phương pháp IAM role được sử dụng cho các tài nguyên như Kinesis stream, Systems Manager Run Command, ECS task, trong đó quyền được gán cho một IAM role, và sau đó role này được gán cho tài nguyên đó để thực hiện các thao tác trên tài nguyên đó.
IAM Permission Boundaries
IAM Permission Boundaries là tính năng nâng cao trong IAM của AWS, cho phép sử dụng một chính sách quản lý được để giới hạn quyền tối đa mà một thực thể IAM (user hoặc role) có thể nhận được. Tính năng này không áp dụng cho nhóm (group). Điều này giúp hạn chế rủi ro bảo mật do những quyền truy cập không cần thiết, tránh trường hợp người dùng hoặc vai trò có thể vô tình hay cố ý lấy quyền quản lý cao hơn những gì được phép.
Ví dụ này đang giải thích cách sử dụng IAM Permission Boundaries và IAM Policy để thiết lập các quyền truy cập cho người dùng hoặc vai trò trong IAM.
Trong ví dụ này, một IAM Permission Boundary được định nghĩa bằng cách sử dụng một managed policy, được áp dụng cho người dùng hoặc vai trò. Policy này cho phép người dùng hoặc vai trò truy cập tất cả các tài nguyên trong AWS, bao gồm s3, CloudWatch và EC2.
Tuy nhiên, một IAM Policy khác được định nghĩa với chỉ định quyền hạn rất hạn chế là chỉ cho phép người dùng hoặc vai trò tạo người dùng trong IAM.
Kết quả là, khi người dùng hoặc vai trò được áp dụng với IAM Permission Boundary và IAM Policy, họ sẽ không có bất kỳ quyền hạn nào, bởi vì IAM Policy chỉ cho phép tạo người dùng, trong khi IAM Permission Boundary cho phép truy cập tất cả các tài nguyên. Do đó, kết hợp chúng dẫn đến “No Permissions” cho người dùng hoặc vai trò đó và dưới đây là 1 ví dụ.
Programmatic access và AWS Management Console access là hai cách khác nhau để truy cập và quản lý các tài nguyên trong Amazon Web Services (AWS). Programmatic access là cách truy cập thông qua API để thực hiện các thao tác tự động trên tài nguyên AWS mà không cần phải đăng nhập vào AWS Management Console. Trong khi đó, AWS Management Console access là cách truy cập tài nguyên AWS thông qua giao diện người dùng trên trình duyệt web. Người dùng cần đăng nhập vào AWS Management Console bằng tên đăng nhập và mật khẩu hoặc thông qua Single Sign-On (SSO) để truy cập các tài nguyên AWS và quản lý chúng.
Phần này mình sẽ không thiết lập bất cứ điều gì, mình bấm Next: Tags.
Phần này mình cũng sẽ không thiết lập bất cứ điều gì, mình bấm Next: Tags.
Phần này cho phép bạn review lại hệ thống, hãy bấm Create user để tạo user này.
Thông báo này cho biết tôi đã tạo thành công user john.
Quay lại phần user chúng ta sẽ đặt quyền ranh giới cho user john.
Chúng ta có thể chỉ định một chính sách bằng cách bấm vào Add permissions.
Nếu chúng ta cài đặt như thế này tức là john có toàn quyền sử dụng hệ thống, hãy bấm Next Review.
Hãy bấm Add permissions.
Bây giờ john cũng như là 1 người dùng toàn quyền nhưng chúng ta cũng có thể tạo cho john một ranh giới.
Và khi chúng ta thiết lập như thế này, ý nói rằng mặc dù john có toàn quyền nhưng anh ta sẽ bị giới hạn hạn tại phần S3.
IAM Permission Boundaries
IAM Permission Boundaries (Giới hạn quyền IAM) là một tính năng nâng cao trong AWS IAM, cho phép sử dụng chính sách quản lý được quản lý để đặt giới hạn cho quyền hạn tối đa mà một thực thể IAM (người dùng hoặc vai trò) có thể có. Tính năng này được sử dụng kết hợp với các chính sách kiểm soát dịch vụ (SCP) của tổ chức AWS.
Giới hạn quyền IAM có các ứng dụng như cho phép phân quyền cho các người dùng phiên quản trị viên trong giới hạn quyền hạn của họ, cho phép nhà phát triển tự gán chính sách và quản lý quyền hạn của mình mà không thể “nâng cao” đặc quyền của mình (= tự đưa mình trở thành quản trị viên) và hạn chế quyền của một người dùng cụ thể (thay vì toàn bộ tài khoản sử dụng Tổ chức và SCP).
IAM Policy Evaluation Logic
IAM là dịch vụ quản lý quyền truy cập của AWS. Khi một yêu cầu truy cập tới tài nguyên AWS, hệ thống sẽ áp dụng logic đánh giá các IAM Policy để quyết định có cho phép hay từ chối yêu cầu truy cập đó.
Có hai loại policy được áp dụng trong quá trình đánh giá: policies được gán trực tiếp cho người dùng hoặc role đang thực thi yêu cầu truy cập, và policies được kế thừa từ các người dùng hoặc role đã được gán cho chúng.
Quá trình đánh giá policy được thực hiện theo thứ tự từ trên xuống dưới, với quyền truy cập được phép nếu tất cả các điều kiện trong policy đều đúng và từ chối quyền truy cập nếu bất kỳ điều kiện nào trong policy là sai. Nếu không có policy nào được tìm thấy trong quá trình đánh giá, quyền truy cập cũng sẽ bị từ chối.
Example IAM Policy
Đây là một ví dụ về IAM Policy, trong đó có 3 hành động được xác định là sqs:CreateQueue, sqs:DeleteQueue và ec2:DescribeInstances.
Policy này cho phép hành động sqs:DeleteQueue và ec2:DescribeInstances nhưng tất cả các hành động liên quan đến sqs sẽ bị từ chối (Deny) bởi effect “Deny” với resource là “*”.
Vì vậy, người dùng hoặc đối tượng IAM sẽ không được phép thực hiện hành động sqs:CreateQueue. Còn với sqs:DeleteQueue và ec2:DescribeInstances, hành động này sẽ được cho phép (Allow) nếu có resource tương ứng được chỉ định.