S3 Cross-Account Access

AWS Organizations

這篇首先前半段是跟 S3 比較沒有直接相關的部分,不過因為為了後面要分享 S3 權限給其他帳號,所以必須先設定 Organization 才有辦法完成。

另外文中的主帳號為 m0761005,分享的帳號為 chester.tang 這隻帳號(寫在前頭方便觀看這篇圖例中現在的角色關係)

首先,要分享權限給其他人,可以透過兩種方式進入到 AWS Organizations:

  1. 點選右上方帳號 My Organization
  2. Management & Governance / AWS Organizations

進入到頁面後,點選 Create organization 按鈕來建立組織吧!

IMAGE

完成後可以看到,目前的使用者前面有個星號,而我們要透過點選 Add account 來新增使用者

IMAGE

選擇要 Invite account 按鈕,並輸入 Email 帳戶或 account ID 來寄送邀請 Mail

IMAGE

收到信件後,切換帳號到剛剛寄送的 AWS 帳號,並 Accept 邀請後就可以加入了!

IMAGE

然後裡面就會出現現在擁有的成員~

IMAGE


Lab - Sharing S3 Buckets Across Accounts

3 differents ways to share S3 buckets across accounts

  • Using Bucket Policies & IAM (applies across the entire bucket). Programmatic Access Only.
  • Using Bucket ACLs & IAM (individual objects). Programmatic Access Only.
  • Cross-Account IAM Roles. Programmatic AND Console access.

IAM

完成上述的 AWS Organizations 之後,可以看到目前組織的畫面,接下來我們來 Cross-Account Access 給其他帳戶

IMAGE

Sharing S3 Buckets Across Accounts 給其他帳號之前,我們先來了解一下整個的流程,如果底下內容有點忘記是什麼了可以參考之前的這篇文章 IAM,流程大致如下:

  • m0761005 帳號需要建立一個 Roles (輸入要給權限的 AWS Account ID),並且選取擁有的 Policy (e.g. AmazonS3FullAccess),完成後會有個專屬連結來給分享的帳號做登入
  • chester.tang 帳號需要建立一個 Users 來切換身份來知道我現在登入的是 m0761005 開出來的登入權限,因此選取擁有的 Policy (e.g. AdminstrationAccess),使得帳號可以 Switch Role

首先,在 m0761005 帳戶的 IAM 中先建立 Roles

IMAGE

因為是要分享給另一個帳號,所以選取 Another AWS accountCreate role,不過首先要知道另一個帳號的 Account ID 才有辦法進行

IMAGE

這個部分應該就滿好懂的,我給這個帳戶要開啟什麼權限,能做什麼操作,都可以透過 policy 來達成,這邊就直接以 S3 ( AmazonS3FullAccess ) 來做範例

IMAGE

今天我們分享這個權限給其他人不會每次都需要上面的步驟,我們可以設定一個 Role name 專門在分享某一個權限給特定的人,這樣就不用一直選取要給的權限。

好比我現在想分享 S3 的權限給我的同事們,我就直接把這個 Role name 叫做 S3_Cross_Account_Access 直接清楚明瞭,也方便之後知道這個 Role 裡面擁有的 Policy 是什麼…

IMAGE

到這個步驟就完成了上述流程的一半步驟,我們 m0761005 帳戶就有可以給其他帳戶 S3 權限的 Role

IMAGE

圖中的 Give this link to users who can switch roles in the console 此段後的連結可以先存起來,此段為其他帳號要 Switch Roles 的連結

接下來,我們來切換帳戶到 Chester.tang。如果上段的 AWS Organizations 有完成的話,會看到目前帳號的是在哪個 Organizations 下,並且會有個 ID

IMAGE

Chester.tang 的帳戶中,如上述的流程,我們先要來建立一個 Users 來跟 m0761005 連結,並且方便我們切換角色

IMAGE

點選 Add user 後,首先先取一個 User name 的名字(記住這個名字將會是日後登入 AWS 的帳戶名稱),並且自己設定密碼

IMAGE

當然地,這邊擁有的 Policy 就是登入了~跟之前 m0761005 在建立 Roles 是相同的

IMAGE

完成後可以再次確認一下前面所選取的項目

IMAGE

到這邊完成後,我們就登出並再登入剛剛建立的帳戶名稱,這時候就會看到有 Switch Roles 的按鈕可以選取,然後來設定 Role

IMAGE

還記得在 m0761005 在建立 Roles 的時候有的 Give this link to users who can switch roles in the console 後存起來的連結嗎?這邊也可以直接貼那段連結就會挑轉到這個頁面了

IMAGE

完成後,就可以看到目前的 Role 並且還有其他資訊

IMAGE

總結

  • Always enable multi-factor authentication on root account
  • Always using a strong and complex password on root account
  • Paying account should be used for billing purposes only. Do not deploy resources into the paying payment.
  • Enable/Disable AWS services using Service Control Policies(SCP) either on OU or on individual accounts.