使用最小權限執行命令是權限管理的最佳實踐,建議您以普通用戶身份執行云助手命令。本文介紹如何通過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實例執行云助手命令,您需要同時提供用戶名和密碼。為了數據安全,您需要在系統運維管理中托管您的Windows登錄密碼,并使用密鑰管理服務KMS加密。更多信息,請參見什么是系統管理與運維服務和什么是密鑰管理服務。
您可以通過以下步驟限制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用戶執行云助手命令報錯。