本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學:建立和設定組織
在本教學課程中,您會建立組織並使用兩個 AWS 成員帳戶進行設定。您會在您的組織中建立其中一個成員帳戶,及邀請其他帳戶加入您的組織。接著,您會使用允許清單技術,以指定帳戶管理員僅可以委派明確列出的服務和動作。這可讓系統管理員在允許公司中的任何其他人使用之前,先驗證所 AWS 引入的任何新服務。如此一來,如果 AWS 引入新服務,系統管理員將服務新增至適當原則中的允許清單之前,它仍會保持禁止狀態。本教學課程也會示範如何使用拒絕清單,以確保成員帳戶中的任何使用者都無法變更 AWS CloudTrail 建立之稽核記錄的組態。
下圖顯示教學的主要步驟。
本教學課程中的任何步驟都不會對您的 AWS 帳單產生成本。 AWS Organizations 是一項免費服務。
必要條件
本教學課程假設您有兩個現有的存取權 AWS 帳戶 (您將建立第三個作為本教學課程的一部分),並且您可以以管理員身分登入每個教學課程。
此教學會提到如下的帳戶:
-
111111111111
– 您用來建立組織的帳戶。此帳戶會成為管理帳戶。此帳戶擁有者的電子郵件地址為 OrgAccount111@example.com
。
-
222222222222
– 您邀請加入組織作為成員帳戶的帳戶。此帳戶擁有者的電子郵件地址為 member222@example.com
。
-
333333333333
– 您建立為組織成員的帳戶。此帳戶擁有者的電子郵件地址為 member333@example.com
。
將上面的值替換成與您測試帳戶關聯的值。我們建議您不要在本教學中使用生產帳戶。
步驟 1:建立您的組織
在此步驟中,您會以管理員身分登入帳戶 111111111111、以管理帳戶身分使用該帳戶來建立組織,然後邀請現有帳戶 222222222222 加入為成員帳戶。
- AWS Management Console
-
您的組織現已建立,其唯一成員即為您個人的帳戶。此為組織的管理帳戶。
邀請現有的帳戶加入您的組織
現在您已有了組織,就可以開始填入帳戶。在本節中的步驟,您會邀請現有帳戶加入為您組織的成員。
- AWS Management Console
-
邀請現有的帳戶加入
-
導覽至 AWS 帳戶 頁面,然後選擇 Add AWS 帳戶 (新增 AWS 帳戶帳戶)。
-
在 [新增 AWS 帳戶頁面] 上,選擇 [邀請現有的] AWS 帳戶。
-
在 Email address or account ID of an AWS 帳戶 to invite (待邀請的 AWS 帳戶 帳戶的電子郵件地址或帳戶 ID) 方塊中,輸入您要邀請的帳戶擁有者電子郵件地址,如下所示:member222@example.com
。或者,如果您知道 AWS 帳戶 ID 號碼,則可以輸入它。
-
在 Message to include in the invitation email message (要包含在邀請電子郵件訊息中的訊息) 方塊中,輸入您所需的任何文字。此文字包含在傳送到帳戶擁有者的電子郵件中。
-
選擇 [傳送邀請]。 AWS Organizations 將邀請傳送給帳戶擁有者。
如果收到指示,請展開錯誤訊息。如果錯誤指出您已超出組織的帳戶限制,或是組織仍在初始化,因此無法新增帳戶,請在建立組織後等待一小時,然後再試一次。如果錯誤仍然存在,請聯絡 AWS
Support。
-
針對此教學的目的,您現在需要接受自己的邀請。執行以下其中一項,以進入主控台中的 Invitations (邀請) 頁面:
-
在 AWS 帳戶 頁面上,選擇 Accept (接受),然後選擇 Confirm (確認)。
邀請可能會延遲接收,您可能需要等待一段時間才能接受邀請。
-
從您的帳戶成員登出,並再次在您的管理帳戶中以管理員身分登入。
建立成員帳戶
在本節中的步驟中,您將 AWS 帳戶 建立自動成為組織成員的。我們在本教學中提到的帳戶為 333333333333。
- AWS Management Console
-
建立成員帳戶
-
在主 AWS Organizations 控台的AWS 帳戶頁面上,選擇 [新增] AWS 帳戶。
-
在 Add an AWS 帳戶 (新增 AWS 帳戶帳戶) 頁面上,選擇 Create an AWS 帳戶 (建立 AWS 帳戶帳戶)。
-
針對 AWS 帳戶 name (AWS 帳戶 帳戶名稱),輸入帳戶的名稱,例如 MainApp
Account
。
-
針對 Email address of the account's root user (帳戶根使用者的電子郵件地址),輸入要為帳戶接收通訊的個人電子郵件地址。此值必須在全域必須是唯一的。沒有任兩個帳戶可以有相同的電子郵件地址。例如,您可以使用類似 mainapp@example.com
的內容。
-
針對 IAM role name (IAM 角色名稱),您可以將它保留空白,以自動使用 OrganizationAccountAccessRole
的預設角色名稱,或者您可以提供自己的名稱。此角色可讓您在以管理帳戶中 IAM 使用者的身分登入時存取新成員帳戶。在本教學中,請將它保留空白,以指示 AWS Organizations
使用預設名稱建立角色。
-
選擇 Create AWS 帳戶 (建立 AWS 帳戶帳戶)。您可能需要稍待片刻並重新整理頁面,才會看見新帳戶顯示在 AWS 帳戶 頁面。
如果您收到錯誤,指出您已超出組織的帳戶限制,或是因為您的組織仍在初始化,所以無法新增帳戶,請在建立組織後等待 1 小時,然後再試一次。如果錯誤仍然存在,請聯絡 AWS
Support。
步驟 2:建立組織單位
在本節的步驟中,您會建立組織單位 (OU),並將您的成員帳戶置放在其中。當您完成時,您的階層看起來會與下圖相似。管理帳戶會留在根中。一個成員帳戶會移至生產 OU,而另一個成員帳戶則移至 MainApp OU,這是生產的子系。
- AWS Management Console
-
若要建立並填入 OU
在接下來的步驟中,您可以與物件互動,您可以選擇物件本身的名稱或物件旁的選項按鈕。
接下來的步驟會讓您選擇選項按鈕,以便您可以隨後透過選擇選單選項來處理關聯的物件。
-
在 AWS Organizations 主控台上,導覽至 AWS 帳戶 頁面。
-
選擇 Root (根) 容器旁邊的核取方塊
。
-
選擇 [動作] 下拉式清單,然後在 [組織單位] 下選擇 [建立新的]。
-
在 Create organizational unit in Root (在根中建立組織單位) 頁面,針對 Organizational unit name (組織單位名稱),輸入 Production
,然後選擇 Create organizational unit (建立組織單位)。
-
選擇您的新 Production (生產) OU 旁邊的核取方塊
。
-
選擇 Actions (動作),然後在 Organizational unit (組織單位) 下,選擇 Create new (建立新的)。
-
在 Create organizational unit in Production (在生產中建立組織單位) 頁面,針對第二個 OU 的名稱,輸入 MainApp
,然後選擇 Create organizational unit (建立組織單位)。
現在您可以將您的成員帳戶移到這些 OU。
-
返回 AWS 帳戶 頁面,然後選擇 Production (生產) OU 旁邊的三角形
,以展開其下的樹狀目錄。這會將 O MainAppU 顯示為生產的子系。
-
在 333333333333 旁邊,選擇核取方塊
(而不是其名稱),選擇 Actions (動作),然後在 AWS 帳戶 下,選擇 Move (移動)。
-
在移動 AWS 帳戶 '3333333333' 頁面上,選擇生產環境旁邊的三角形以將其展開。在旁邊 MainApp,選擇選項按鈕
(不是其名稱),然後選擇 [移動] AWS 帳戶。
-
在 222222222222 旁邊,選擇核取方塊
(而不是其名稱),選擇 Actions (動作),然後在 AWS 帳戶 下,選擇 Move (移動)。
-
在 [移動 AWS 帳戶 '2222222222] 頁面上,選擇 [生產] 旁邊的圓鈕 (而非其名稱),然後選擇 [移動]。 AWS 帳戶
步驟 3:建立服務控制政策
在本節的步驟中,您會建立三個服務控制政策 (SCP),並將他們連接到根和 OU,以限制組織帳戶中的使用者可以執行的作業。第一個 SCP 可防止任何成員帳戶中的任何人建立或修改您設定的任何 AWS CloudTrail 記錄。管理帳戶不受任何 SCP 影響,因此套用 S CloudTrail CP 之後,您必須從管理帳戶建立任何記錄檔。
啟用組織的服務控制政策類型
在可以將任何類型的政策連接到根或根內的任何 OU 之前,您必須先啟用該組織的政策類型。預設不會啟用政策類型。本節中的步驟會說明如何為組織啟用服務控制政策 (SCP) 類型。
- AWS Management Console
-
為組織啟用 SCP。
-
導覽至 Policies (政策) 頁面,然後選擇 Service control policies (服務控制政策)。
-
在 Service control policies (服務控制政策) 頁面中,選擇 Enable service control policies (啟用服務控制政策)。
綠色橫幅即會出現,通知您現在可以在組織中建立 SCP。
建立 SCP
現在,組織中已啟用服務控制政策,您可以建立本教學課程所需的三項政策。
- AWS Management Console
-
建立第一個封鎖 CloudTrail 組態動作的 SCP
-
導覽至 Policies (政策) 頁面,然後選擇 Service control policies (服務控制政策)。
-
在 Service control policies (服務控制政策) 頁面上,選擇 Create policy (建立政策)。
-
針對 Policy name (政策名稱),輸入 Block
CloudTrail Configuration Actions
。
-
在 [原則] 區段的右側服務清單中,選 CloudTrail 取服務。然後選擇下列動作:AddTagsCreateTrailDeleteTrail、RemoveTags、、StartLogging、StopLogging、和UpdateTrail。
-
仍在右窗格中,選擇添加資源並指定CloudTrail和所有資源。然後選擇 Add resource (新增資源)。
左側的政策陳述式看起來與以下內容相似。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1234567890123",
"Effect": "Deny",
"Action": [
"cloudtrail:AddTags",
"cloudtrail:CreateTrail",
"cloudtrail:DeleteTrail",
"cloudtrail:RemoveTags",
"cloudtrail:StartLogging",
"cloudtrail:StopLogging",
"cloudtrail:UpdateTrail"
],
"Resource": [
"*"
]
}
]
}
-
選擇建立政策。
第二個政策會定義您要為生產 OU 中使用者和角色啟用的所有服務及動作允許清單。完成之後,生產 OU 中的使用者便只會存取列出的服務和動作。
- AWS Management Console
-
建立會為生產 OU 將核准的服務列入允許清單的第二個政策
-
在 Service control policies (服務控制政策) 頁面中,選擇 Create policy (建立政策)。
-
針對 Policy name (政策名稱),輸入 Allow
List for All Approved Services
。
-
將您的游標置放在 Policy (政策) 區段的右側窗格中,然後貼上政策,如下所示。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1111111111111",
"Effect": "Allow",
"Action": [
"ec2:*",
"elasticloadbalancing:*",
"codecommit:*",
"cloudtrail:*",
"codedeploy:*"
],
"Resource": [ "*" ]
}
]
}
-
選擇建立政策。
最終原則會提供封鎖無法在 MainApp OU 中使用的服務的拒絕清單。在本教學課程中,您會封鎖 OU 中任何帳戶中對 Amazon DynamoDB 的存取MainApp。
- AWS Management Console
-
若要建立拒絕存取 OU 中無法使用之服務的第三個原則 MainApp
-
在 Service control policies (服務控制政策) 頁面中,選擇 Create policy (建立政策)。
-
針對 Policy name (政策名稱),輸入 Deny
List for MainApp Prohibited Services
。
-
在左側的 Policy (政策) 區段中,選取 Amazon DynamoDB 作為服務。針對動作,選擇 All actions (所有動作)。
-
在左側窗格中選擇 Add resource (新增資源),並指定 DynamoDB 和 All Resources (所有資源)。然後選擇 Add resource (新增資源)。
右側的政策陳述式會進行更新,看起來與以下內容相似。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [ "dynamodb:*" ],
"Resource": [ "*" ]
}
]
}
-
選擇 Create policy (建立政策) 來儲存 SCP。
將 SCP 連接到您的 OU
現在 SCP 已存在,並且已為您的根帳戶啟用,您可以將它們連接到根帳戶和 OU。
- AWS Management Console
-
將政策連接到根和 OU
-
導覽至 AWS 帳戶 頁面。
-
在 AWS 帳戶 頁面中,選擇 Root (根) (其名稱,而非單選按鈕),以導覽至其詳細資訊頁面。
-
在 Root (根) 詳細資訊頁面中,選擇 Policies (政策) 索引標籤,然後在 Service Control Policies (服務控制政策) 中,選擇 Attach (連接)。
-
在 Attach a service control policy (連接服務控制政策) 頁面上,選擇名稱為 Block
CloudTrail Configuration Actions
的 SCP 旁邊的選項按鈕,然後選擇 Attach (連接)。在本教學課程中,您會將其附加至根目錄,以便影響所有成員帳戶,以防止任何人變更您的設定 CloudTrail方式。
在 Root (根) 詳細資訊頁面,Policies (政策) 索引標籤現在會顯示連接至根的兩個 SCP:您剛剛連接的 SCP 和預設的 FullAWSAccess
SCP。
-
導覽回 AWS 帳戶 頁面,然後選擇 Production (生產) OU (其名稱,而非單選按鈕),以導覽至其詳細資訊頁面。
-
在 Production (生產) OU 的詳細資訊頁面中,選擇 Policies (政策) 索引標籤。
-
在 Service Control Policies (服務控制政策) 中,選擇 Attach (連接)。
-
在 Attach a service control policy (連接服務控制政策) 頁面上,選擇名 Allow List for All
Approved Services
旁邊的選項按鈕,然後選擇 Attach (連接)。這可讓使用者或 Production (生產) OU 中成員帳戶的使用者或角色來存取核准的服務。
-
選擇 Policies (政策) 索引標籤,查看連接至 OU 的那兩個 SCP:您剛剛連接的 SCP 和預設的 FullAWSAccess
SCP。不過,因為 FullAWSAccess
SCP 也在允許所有服務和動作的允許清單中,所以您現在必須分離此 SCP,以確保僅允許您所核准的服務。
-
若要從生產 OU 移除預設原則,請選擇 [完整] 的選項按鈕AWSAccess,選擇 [卸離],然後在確認對話方塊中選擇 [卸離] 原則。
移除此預設政策後,您在前面步驟中所連接允許清單 SCP 中的所有動作和服務,將立即無法提供 Production (生產) OU 下所有成員帳戶存取。任何對於使用不在 Allow List for All Approved Services (所有核准服務的允許清單) SCP 中之動作的請求都會遭到拒絕。即使帳戶中的管理員將 IAM 許可政策連接到其中一個成員帳戶的使用者,也是如此。
-
現在您可以附加名為的 SCP,Deny List for MainApp
Prohibited services
以防止 MainApp OU 中帳戶中的任何人使用任何受限制的服務。
若要這麼做,請瀏覽至AWS 帳戶頁面,選擇三角形圖示以展開生產 OU 的分支,然後選擇 MainAppOU (它的名稱,而不是選項按鈕) 以瀏覽至其內容。
-
在MainApp詳細資訊頁面上,選擇策略標籤。
-
在 [服務控制原則] 底下,選擇 [附加],然後在可用原則清單中選擇 [ MainApp 禁止的服務的拒絕清單] 旁的圓鈕,然後選擇 [附加原則]。
步驟 4:測試您組織的政策
您現在可以以任何成員帳戶中的使用者身分登入,並嘗試執行各種 AWS 動作:
-
若您以管理帳戶中的使用者身分登入,您可以執行您 IAM 許可政策允許的任何操作。SCP 不會影響管理帳戶中的任何使用者或角色,無論帳戶位在哪一個根或 OU。
-
如果您以帳戶 2222222222 的使用者身分登入,則可以執行允許清單允許的任何動作。 AWS Organizations 拒絕任何嘗試在不在允許清單中的任何服務中執行動作。此外, AWS Organizations 拒絕任何嘗試執行其中一個 CloudTrail 組態動作的嘗試。
-
如果您以帳戶 333333333333 中的使用者身分登入,您可以執行允許清單所允許,且未被拒絕清單所封鎖的任何動作。 AWS Organizations 會拒絕所有嘗試執行不在允許清單的任何動作、以及在拒絕清單政策任何動作。此外, AWS Organizations 拒絕任何嘗試執行其中一個 CloudTrail 組態動作的嘗試。