配置訪問域名及憑證
本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。
使用PHP SDK發(fā)起SMQ請(qǐng)求,您需要配置接入點(diǎn)及訪問憑證。阿里云服務(wù)會(huì)通過訪問憑證驗(yàn)證您的身份信息和訪問權(quán)限。您可以根據(jù)使用場景對(duì)認(rèn)證和授權(quán)的要求,選擇不同類型的訪問憑證。本文介紹如何配置接入點(diǎn)、臨時(shí)訪問憑證、長期訪問憑證。
配置訪問域名
使用PHP SDK發(fā)起SMQ請(qǐng)求時(shí),接入點(diǎn)一般位于PHP文件的最下方。如下所示,請(qǐng)?jiān)?code data-tag="code" code-type="xCode" class="code">$endPoint = ""處配置Endpoint。
$accessId = getenv(Constants::ALIYUN_AK_ENV_KEY);
$accessKey = getenv(Constants::ALIYUN_SK_ENV_KEY);
$endPoint = "";
關(guān)于SMQ的接入點(diǎn)信息,您可以在控制臺(tái)的隊(duì)列詳情/主題詳情頁面的接入點(diǎn)區(qū)域查看。
配置訪問憑證
您可以選擇以下類型的訪問憑證。
長期訪問憑證:出于安全性考慮,不建議您使用長期訪問憑證,建議您使用臨時(shí)訪問憑證。對(duì)于需要便利性的場景,長期訪問憑證可以在較長時(shí)間內(nèi)免除多次刷新的麻煩。建議每三個(gè)月更換一次長期訪問憑證,以提高賬號(hào)的安全性。當(dāng)長期訪問憑證泄露或者不再使用時(shí),應(yīng)該及時(shí)刪除或者禁用相關(guān)的訪問憑證,以免造成安全風(fēng)險(xiǎn)。
臨時(shí)訪問憑證:對(duì)于需要高安全性的場景,例如臨時(shí)授權(quán)應(yīng)用訪問SMQ,建議使用臨時(shí)訪問憑證。臨時(shí)訪問憑證可以限制訪問的有效期,從而減少訪問憑證泄露的風(fēng)險(xiǎn)。此外,臨時(shí)訪問憑證支持權(quán)限控制,可以有效地避免權(quán)限過大的問題。
使用長期訪問憑證
當(dāng)您準(zhǔn)備在應(yīng)用或服務(wù)中長期訪問SMQ服務(wù)時(shí),您可以通過RAM用戶的訪問密鑰的方式訪問您的SMQ。
獲取RAM用戶的訪問密鑰。
如何獲取RAM用戶的訪問密鑰,請(qǐng)參見創(chuàng)建RAM用戶的AccessKey。
重要對(duì)于超過3個(gè)月的RAM用戶的訪問密鑰,建議及時(shí)輪換。對(duì)于長期不用的RAM用戶的訪問密鑰,建議及時(shí)禁用并刪除。以降低RAM用戶的訪問密鑰被泄露的風(fēng)險(xiǎn)。
配置RAM用戶的訪問密鑰。
環(huán)境變量
配置環(huán)境變量。
macOS
打開終端。
執(zhí)行以下命令。
nano ~/.bash_profile
在文件末尾添加RAM用戶的訪問密鑰。
export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
按
Ctrl
+X
,按Y
鍵確認(rèn)保存,然后按Enter
鍵退出文件。輸入以下命令以使更改生效。
source ~/.bash_profile
執(zhí)行以下命令驗(yàn)證環(huán)境變量配置。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回示例如下:
LTA**** moiEs****
Linux
打開終端。
執(zhí)行以下命令。
sudo vim /etc/profile
在文件末尾添加RAM用戶的訪問密鑰。
export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
按
ESC
鍵退出編輯模式,輸入:wq
,然后按Enter
鍵保存并退出文件。輸入以下命令以使更改生效。
source /etc/profile
執(zhí)行以下命令驗(yàn)證環(huán)境變量配置。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回示例如下:
LTA**** moiEs****
Windows
通過圖形化用戶界面GUI
以Windows 10為例,通過圖形化用戶界面以環(huán)境變量的方式設(shè)置RAM用戶訪問密鑰的步驟如下:
在桌面右鍵單擊此電腦,選擇
。添加以下環(huán)境變量。
變量名
示例值
ALIBABA_CLOUD_ACCESS_KEY_ID
LTA****
ALIBABA_CLOUD_ACCESS_KEY_SECRET
moiEs****
執(zhí)行以下命令驗(yàn)證環(huán)境變量配置。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回示例如下:
LTA**** moiEs****
通過命令行提示符CMD
打開命令行。
執(zhí)行以下命令配置RAM用戶的訪問密鑰。
set ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** set ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
執(zhí)行以下命令以使更改生效。
setx ALIBABA_CLOUD_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%" setx ALIBABA_CLOUD_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%"
執(zhí)行以下命令驗(yàn)證環(huán)境變量配置。
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
成功返回示例如下:
LTA**** moiEs****
通過Windows PowerShell
按下鍵盤上的
Win + X
組合鍵。設(shè)置RAM用戶的訪問密鑰。
僅當(dāng)前會(huì)話有效
在彈出的菜單中,選擇Windows PowerShell。
為當(dāng)前會(huì)話添加以下環(huán)境變量。
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "LTA****" $env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "moiEs****"
對(duì)所有新會(huì)話有效
在彈出的菜單中,選擇Windows PowerShell。
為所有新會(huì)話添加以下環(huán)境變量。
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::User) [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::User)
對(duì)所有用戶有效
在彈出的菜單中,選擇Windows PowerShell(管理員)。
為所有用戶添加以下環(huán)境變量。
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine) [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)
執(zhí)行以下命令驗(yàn)證環(huán)境變量配置。
Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回示例如下:
LTA**** moiEs****
從環(huán)境變量中獲取RAM用戶的訪問密鑰。
// 使用環(huán)境變量中獲取的RAM用戶的訪問密鑰配置訪問憑證。 $accessId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); $accessKey = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
代碼嵌入
警告在代碼中嵌入訪問憑證會(huì)導(dǎo)致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源SMQ,造成損失。因此,建議您使用更安全的方式,例如從環(huán)境變量中獲取訪問憑證,來提高安全性。
$accessId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); $accessKey = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); $endPoint = "example.endpoint"; $client = new Client($endPoint, $accessId, $accessKey);
使用臨時(shí)訪問憑證
當(dāng)您準(zhǔn)備臨時(shí)訪問SMQ服務(wù)時(shí),您可以配置STS臨時(shí)訪問憑證,通過STS服務(wù)頒發(fā)一個(gè)STS臨時(shí)訪問憑證。臨時(shí)訪問憑證無需透露您的RAM用戶訪問密鑰,使您的SMQ訪問更加安全。
創(chuàng)建RAM用戶。
具體操作,請(qǐng)參見創(chuàng)建RAM用戶。
為RAM用戶授予
AliyunSTSAssumeRoleAccess
權(quán)限。具體操作,請(qǐng)參見為RAM用戶授權(quán)。
使用RAM用戶調(diào)用STS服務(wù)的AssumeRole接口獲取STS臨時(shí)訪問憑證。
具體操作,請(qǐng)參見AssumeRole。
配置STS臨時(shí)訪問憑證。
環(huán)境變量
使用獲取的STS臨時(shí)訪問憑證配置環(huán)境變量。
macOS
打開終端。
執(zhí)行以下命令。
nano ~/.bash_profile
在文件末尾添加從STS服務(wù)獲取的臨時(shí)訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
export MNS_ACCESS_KEY_ID=LTA**** export MNS_ACCESS_KEY_SECRET=moiEs**** export MNS_SESSION_TOKEN=CAES****
按
Ctrl
+X
,按Y
鍵確認(rèn)保存,然后按Enter
鍵退出文件。執(zhí)行以下命令以使更改生效。
source ~/.bash_profile
執(zhí)行以下命令驗(yàn)證環(huán)境變量配置。
echo $MNS_ACCESS_KEY_ID echo $MNS_ACCESS_KEY_SECRET echo $MNS_SESSION_TOKEN
成功返回示例如下:
LTA**** moiEs**** CAES****
Linux
打開終端。
執(zhí)行以下命令。
sudo vim /etc/profile
在文件末尾添加從STS服務(wù)獲取的臨時(shí)訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
export MNS_ACCESS_KEY_ID=LTA**** export MNS_ACCESS_KEY_SECRET=moiEs**** export MNS_SESSION_TOKEN=CAES****
按
ESC
鍵退出編輯模式,輸入:wq
,然后按Enter
鍵保存并退出文件。執(zhí)行以下命令以使更改生效。
source /etc/profile
執(zhí)行以下命令驗(yàn)證環(huán)境變量配置。
echo $MNS_ACCESS_KEY_ID echo $MNS_ACCESS_KEY_SECRET echo $MNS_SESSION_TOKEN
成功返回示例如下:
LTA**** moiEs**** CAES****
Windows
通過圖形化用戶界面GUI
以Windows 10為例,通過圖形化用戶界面以環(huán)境變量的方式設(shè)置STS臨時(shí)訪問憑證的步驟如下:
在桌面右鍵單擊此電腦,選擇
。添加以下環(huán)境變量。
變量名
示例值
MNS_ACCESS_KEY_ID
LTA****
MNS_ACCESS_KEY_SECRET
moiEs****
MNS_SESSION_TOKEN
CAES****
執(zhí)行以下命令驗(yàn)證環(huán)境變量配置。
echo %MNS_ACCESS_KEY_ID% echo %MNS_ACCESS_KEY_SECRET% echo %MNS_SESSION_TOKEN%
成功返回示例如下:
LTA**** moiEs**** CAES****
通過命令行提示符CMD
打開命令行。
執(zhí)行以下命令配置從STS服務(wù)獲取的臨時(shí)訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
set MNS_ACCESS_KEY_ID=LTA**** set MNS_ACCESS_KEY_SECRET=moiEs**** set MNS_SESSION_TOKEN=CAES****
執(zhí)行以下命令以使更改生效。
setx MNS_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%" setx MNS_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%" setx MNS_SESSION_TOKEN "%MNS_SESSION_TOKEN%"
執(zhí)行以下命令驗(yàn)證環(huán)境變量配置。
echo %MNS_ACCESS_KEY_ID% echo %MNS_ACCESS_KEY_SECRET% echo %MNS_SESSION_TOKEN%
成功返回示例如下:
LTA**** moiEs**** CAES****
通過Windows PowerShell
按下鍵盤上的
Win + X
組合鍵。設(shè)置STS臨時(shí)訪問憑證。
僅當(dāng)前會(huì)話有效
在彈出的菜單中,選擇Windows PowerShell。
為當(dāng)前會(huì)話添加以下環(huán)境變量。
$env:MNS_ACCESS_KEY_ID = "LTA****" $env:MNS_ACCESS_KEY_SECRET = "moiEs****" $env:MNS_SESSION_TOKEN = "CAE****"
對(duì)所有新會(huì)話有效
在彈出的菜單中,選擇Windows PowerShell。
為所有新會(huì)話添加以下環(huán)境變量。
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::User) [System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::User) [System.Environment]::SetEnvironmentVariable('MNS_SESSION_TOKEN', 'CAES****', [System.EnvironmentVariableTarget]::User)
對(duì)所有用戶有效
在彈出的菜單中,選擇Windows PowerShell(管理員)。
為所有用戶添加以下環(huán)境變量。
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine) [System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine) [System.Environment]::SetEnvironmentVariable('MNS_SESSION_TOKEN', 'CAES****', [System.EnvironmentVariableTarget]::Machine)
執(zhí)行以下命令驗(yàn)證環(huán)境變量配置。
Get-ChildItem env:MNS_ACCESS_KEY_ID Get-ChildItem env:MNS_ACCESS_KEY_SECRET Get-ChildItem env:MNS_SESSION_TOKEN
成功返回示例如下:
LTA**** moiEs**** CAES****
從環(huán)境變量中獲取STS臨時(shí)訪問憑證。
$accessId = getenv("MNS_ACCESS_KEY_ID"); $accessKey = getenv("MNS_ACCESS_KEY_SECRET"); $securityToken = getenv("MNS_SESSION_TOKEN");
代碼嵌入
警告在代碼中嵌入訪問憑證會(huì)導(dǎo)致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源SMQ,造成損失。因此,建議您使用更安全的方式,例如從環(huán)境變量中獲取訪問憑證,來提高安全性。
$accessId = getenv("MNS_ACCESS_KEY_ID"); $accessKey = getenv("MNS_ACCESS_KEY_SECRET"); $securityToken = getenv("MNS_SESSION_TOKEN"); $endPoint = "example.endpoint"; $client = new Client($endPoint, $accessId, $accessKey, $securityToken);