使用最小許可權執行命令是許可權管理的最佳實務,建議您以普通使用者身份執行雲助手命令。本文介紹如何通過RAM使用者的許可權控制,實現普通使用者(非root或system使用者)執行雲助手命令。
前提條件
ECS執行個體中已建立普通使用者,本文以普通使用者user01、user02為例。
背景資訊
執行雲助手命令時,如果您未配置指定的許可權,預設是以ECS執行個體內的最大許可權來執行的。例如,Linux執行個體是以root使用者來執行命令,Windows執行個體是以system使用者來執行命令。
由於資訊安全管理,您可能需要禁止在ECS執行個體中使用root或system使用者。此時,您可以通過RAM使用者並設定相關的權限原則,禁止ECS執行個體中root或者system使用者執行雲助手命令,並允許執行個體中特定使用者(例如user01、user02)執行雲助手命令。
配置Linux執行個體的普通使用者執行雲助手命令
如果只需要在Linux執行個體中執行雲助手命令,您可以通過以下步驟限制RAM使用者使用root執行雲助手命令。
使用阿里雲帳號登入RAM控制台。
建立一個新的RAM使用者。具體操作,請參見建立RAM使用者。
RAM使用者資訊樣本如下所示。
名稱
樣本
登入名稱稱
commandUser
顯示名稱
commandUser
訪問方式
本文中提供阿里雲控制台方式和OpenAPI方式使用雲助手,此處選中控制台訪問和OpenAPI 呼叫訪問。
說明您可以根據實際使用方式,選擇對應的一種訪問方式,實現許可權最小化管理。
設定密碼
選擇自動產生密碼。
需要重設密碼
選擇使用者在下次登入時必須重設密碼。
MFA 多因素認證
選擇不要求。
建立RAM使用者後,您需要保留RAM使用者的使用者名稱、密碼和AccessKey資訊。
建立雲助手相關權限原則。具體操作,請參見建立自訂權限原則。
建立一個commandUserPolicy權限原則,限制ECS執行個體中使用者執行雲助手命令。以下為策略內容的兩個樣本,您可以根據實際情況修改。
允許部分ECS執行個體普通使用者(user01和user02)執行雲助手命令的RAM權限原則:
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeInstances", "ecs:DescribeTagKeys", "ecs:DescribeTags", "ecs:CreateCommand", "ecs:DescribeCommands", "ecs:InvokeCommand", "ecs:RunCommand", "ecs:DeleteCommand", "ecs:DescribeInvocations", "ecs:DescribeInvocationResults", "ecs:StopInvocation", "ecs:DescribeCloudAssistantStatus", "ecs:InstallCloudAssistant" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringEquals": { "ecs:CommandRunAs": [ "user01", "user02" ] } } } ], "Version": "1" }
說明如果您需要允許其他使用者,可以修改或增加Condition中的使用者名稱。
禁止部分ECS執行個體的使用者(root和system)執行雲助手命令的RAM權限原則:
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeInstances", "ecs:DescribeTagKeys", "ecs:DescribeTags", "ecs:CreateCommand", "ecs:DescribeCommands", "ecs:InvokeCommand", "ecs:RunCommand", "ecs:DeleteCommand", "ecs:DescribeInvocations", "ecs:DescribeInvocationResults", "ecs:StopInvocation", "ecs:DescribeCloudAssistantStatus", "ecs:InstallCloudAssistant" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringNotEqualsIgnoreCase": { "ecs:CommandRunAs": [ "system", "root" ] } } } ], "Version": "1" }
說明如果您需要限制其他使用者,可以修改或增加Condition中的使用者名稱。
為RAM使用者佈建ECS唯讀許可權和雲助手相關許可權。具體操作,請參見為RAM使用者授權。
設定ECS唯讀許可權:選擇AliyunECSReadOnlyAccess。
設定雲助手相關許可權:選擇上一步中建立的commandUserPolicy。
使用RAM使用者登入阿里雲控制台。
運行雲助手命令驗證結果。具體操作,請參見建立並執行命令。
控制台驗證操作如下所示,需要設定執行使用者。
user01使用者能夠正常執行雲助手命令,root使用者執行雲助手命令報錯。
CLI驗證操作如下所示,user01使用者能夠正常執行雲助手命令,root使用者執行雲助手命令報錯。
配置Windows執行個體的普通使用者執行雲助手命令
如果需要在Windows執行個體執行雲助手命令,您需要同時提供使用者名稱和密碼。為了資料安全,您需要在CloudOps Orchestration Service中託管您的Windows登入密碼,並使用Key Management Service加密。更多資訊,請參見什麼是系統管理與營運服務和什麼是Key Management Service。
您可以通過以下步驟限制RAM使用者使用root使用者和system使用者執行雲助手命令。
使用阿里雲帳號登入RAM控制台。
建立一個新的RAM使用者。具體操作,請參見建立RAM使用者。
RAM使用者資訊樣本如下所示。
名稱
樣本
登入名稱稱
commandUser
顯示名稱
commandUser
訪問方式
本文中提供阿里雲控制台方式和OpenAPI方式使用雲助手,此處選中控制台訪問和OpenAPI 呼叫訪問。
說明您可以根據實際使用方式,選擇對應的一種訪問方式,實現許可權最小化管理。
設定密碼
選擇自動產生密碼。
需要重設密碼
選擇使用者在下次登入時必須重設密碼。
MFA 多因素認證
選擇不要求。
建立RAM使用者後,您需要保留RAM使用者的使用者名稱、密碼和AccessKey資訊。
建立雲助手、KMS相關權限原則。具體操作,請參見建立自訂權限原則。
雲助手相關許可權:
建立一個commandUserPolicy權限原則,限制ECS執行個體中使用者執行雲助手命令。以下為策略內容的兩個樣本,您可以根據實際情況修改。
允許部分ECS執行個體普通使用者(user01和user02)執行雲助手命令的RAM權限原則:
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeInstances", "ecs:DescribeTagKeys", "ecs:DescribeTags", "ecs:CreateCommand", "ecs:DescribeCommands", "ecs:InvokeCommand", "ecs:RunCommand", "ecs:DeleteCommand", "ecs:DescribeInvocations", "ecs:DescribeInvocationResults", "ecs:StopInvocation", "ecs:DescribeCloudAssistantStatus", "ecs:InstallCloudAssistant" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringEquals": { "ecs:CommandRunAs": [ "user01", "user02" ] } } } ], "Version": "1" }
說明如果您需要允許其他使用者,可以修改或增加Condition中的使用者名稱。
禁止部分ECS執行個體的使用者(root和system)執行雲助手命令的RAM權限原則:
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeInstances", "ecs:DescribeTagKeys", "ecs:DescribeTags", "ecs:CreateCommand", "ecs:DescribeCommands", "ecs:InvokeCommand", "ecs:RunCommand", "ecs:DeleteCommand", "ecs:DescribeInvocations", "ecs:DescribeInvocationResults", "ecs:StopInvocation", "ecs:DescribeCloudAssistantStatus", "ecs:InstallCloudAssistant" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringNotEqualsIgnoreCase": { "ecs:CommandRunAs": [ "system", "root" ] } } } ], "Version": "1" }
說明如果您需要限制其他使用者,可以修改或增加Condition中的使用者名稱。
KMS相關許可權:
建立一個kmsPolicy權限原則,策略內容樣本如下所示,更多資訊,請參見常見的授權策略樣本。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:Describe*", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "*" ] } ] }
為RAM使用者佈建ECS、OOS、雲助手和KMS等相關許可權。具體操作,請參見為RAM使用者授權。
設定ECS唯讀許可權:選擇AliyunECSReadOnlyAccess。
設定OOS唯讀許可權:選擇AliyunOOSReadOnlyAccess。
設定雲助手相關許可權:選擇上一步中建立的commandUserPolicy。
設定KMS相關許可權:選擇上一步中建立的kmsPolicy。
為Windows執行個體設定RAM角色。
建立RAM角色相關許可權。具體操作,請參見建立自訂權限原則。
策略內容如下所示:
{ "Version": "1", "Statement": [ { "Action": [ "kms:GetSecretValue" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "oos:GetSecretParameter" ], "Effect": "Allow", "Resource": "*" } ] }
建立RAM角色。具體操作,請參見建立可信實體為阿里雲服務的RAM角色。
相關配置樣本如下所示。
名稱
樣本
選擇可信實體類型
選擇阿里雲服務。
角色類型
選擇普通服務角色。
角色名稱
AxtSecretRamRole
選擇受信服務
在下拉式清單中選擇雲端服務器。
為RAM角色授權。具體操作,請參見為RAM角色授權。
為ECS執行個體設定RAM角色。具體操作,請參見授予執行個體RAM角色。
通過OOS建立加密參數,用於託管Windows登入密碼。具體操作,請參見建立加密參數。
說明OOS加密參數所在地區必須和ECS執行個體所在地區一致,否則ECS執行個體無法使用此託管密碼。
以下為設定user01使用者密碼託管的樣本值:
名稱
樣本
參數名稱
axtSecretPassword
KMS密鑰ID
使用預設的Default Service CMK。
值
Windows執行個體登入密碼。此處填入user01使用者的登入密碼。
使用RAM使用者登入阿里雲控制台。
運行雲助手命令驗證結果。具體操作,請參見建立並執行命令。
以在Windows執行個體中運行雲助手命令為例,驗證使用權限設定是否生效。
控制台驗證操作如下所示,需要設定執行使用者和OOS託管密碼。
user01使用者能夠正常執行雲助手命令,system使用者執行雲助手命令報錯。
CLI驗證操作如下所示,user01使用者能夠正常執行雲助手命令,system使用者執行雲助手命令報錯。