Share subnets với AWS account khác

Thông thường, khi nhắc đến share resource với một AWS account khác, ta sẽ thường chỉ nghĩ đến chẳng hạn như share 1 EBS snapshots. Giờ tôi muốn chia sẻ các resource networking với 1 account khác, VD: chia sẻ các subnets hay IP thì làm thế nào?

Nhắc đến networking cross account thì sẽ nghĩ đến các cách thức như VPC Peering hay sử dụng VPN. Tuy nhiên, các phương thức này sẽ chỉ cho phép các resource bên trong kết nối với nhau, tài khoản được share access sẽ không thể nhìn thấy được resources trên AWS UI console.

Nếu muốn có thể thấy được trên UI console, và sử dụng được thì chúng ta cần đến 1 công cụ khác – Resource Access Manager (RAM)

Chi tiết về RAM thì có thể đọc tại đây:

docs.aws.amazon.com/ram/latest/userguide/wh..

Ở đây, tôi sẽ tạo 1 demo nhỏ về RAM.

Yêu cầu để thực hiện demo:

– Có 2 tài khoản AWS (ví dụ gọi là tài khoản common và tài khoản dev). Bạn cần enable AWS Organization cho tài khoản common, và join tài khoản dev vào làm member của organization (cách set up AWS Organization tham khảo thêm tại:

docs.aws.amazon.com/organizations/latest/us..

Tại tài khoản dev, để trong việc switch account, bạn tại 1 cross-account role (quyền ReadOnlyAccess), ở đây vì tiện tài khoản, tôi sử dụng quyền là AdministratorAccess và configure trusted identity là tài khoản common.

Chi tiết các configure cross-account role, xem tại:

https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

Các bước thực hiện: (các bước 1-5, bạn thực hiện trên account common)

1. Mở AWS CloudFormation Console, đảm bảo rằng bạn đang ở region N. Virginia:

https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/quickcreate?templateURL=https://learn-cantrill-labs.s3.amazonaws.com/awscoursedemos/0040-aws-mixed-sharedORGVPC/A4LVPC.yaml&stackName=A4LVPC

Bạn sẽ thấy màn hình như sau:

3. Tick chọn vào ô được khoanh đỏ trong ảnh, và nhấn Create stack.

Đợi cho tất cả các resource đã được tạo xong.

4. Access vào setting của RAM console:

us-east-1.console.aws.amazon.com/ram/home?r..:

Tick chọn Enable sharing with AWS Organizations và chọn Save setting

5. Access vào RAM Console:

us-east-1.console.aws.amazon.com/ram/home?r..:

Bạn nhấn vào “Create a resource share” và configure như sau:

– Name: Đặt tên tùy thích

– Resources: Tick chọn các resource bạn muốn chia sẻ

Nhấn next, đến bước Grant access to principals, bạn tick chọn “Allow sharing only within your organization”

Dưới phần principals, bạn enable button Display organizational structure và chọn member account/OUs bạn muốn chia sẻ. Nhấn next, nhấn tiếp Create resource share.

Lúc này, bạn đã thành công trong việc chia sẻ subnets đến AWS account khác.

5. Switch role sang account dev

6. Access vào RAM console trên account dev:

https://us-east-1.console.aws.amazon.com/ram/home?region=us-east-1#SharedResourceShares:

Tại đây bạn sẽ nhìn thấy resource share được tạo trên account common. Bạn có thể access vào VPC console để kiểm tra các subnet được share.

Kết quả trên account dev của tôi:

Tôi chia sẻ 12 subnets được tạo ra bởi cloudformation stack bên trên, và tại đây tôi đã thấy 12 subnets. Tại account dev, tôi có thể deploy resources vào các subnets này, nhưng tôi sẽ không thể xóa, hay thay đổi các configuration của các subnet được share này.

Câu hỏi:

1. Account common share subnets cho tôi, vậy tôi có thể nhìn thấy các resources (vd: EC2 instances) mà account common tạo trên account dev không?

\=> Không. Bạn có thể sử dụng subnet, nhưng sẽ không thấy được các resource account chia sẻ đã tạo trên AWS Management console, nếu bạn dùng AWS CLI command để list resource thì cũng chỉ thấy các resource mà bạn đã tạo. Tương tự thế, account common cũng không nhìn thấy được các resources bạn tạo ở shared subnets.

2. Connection giữa các resource tại 2 account ra sao?

\=> Vì cùng nằm trong 1 VPC, nên các kết nối giữa các resource của 2 account cũng tương tự như kết nối resource trong nội bộ 1 VPC

Tóm lại là: tao share cho chúng mày dùng chung, nhưng tài sản nhà tao vẫn do tao quản thôi.

3. Chi phí sử dụng RAM thế nào?

\=> RAM là miễn phí, bạn chỉ trả tiền cho các service resources thôi. Vì nằm trong 1 Org, nên vẫn như thông thường: mọi chi phí sẽ được tính vào billing của account manage organization (trường hợp này là billing của account common)