使用PHP SDK發起SMQ請求,您需要配置存取點及訪問憑證。阿里雲服務會通過訪問憑證驗證您的身份資訊和存取權限。您可以根據使用情境對認證和授權的要求,選擇不同類型的訪問憑證。本文介紹如何配置存取點、臨時訪問憑證、長期訪問憑證。
配置訪問網域名稱
使用PHP SDK發起SMQ請求時,存取點一般位於PHP檔案的最下方。如下所示,請在$endPoint = ""
處配置Endpoint。
$accessId = getenv(Constants::ALIYUN_AK_ENV_KEY);
$accessKey = getenv(Constants::ALIYUN_SK_ENV_KEY);
$endPoint = "";
關於SMQ的存取點資訊,您可以在控制台的隊列詳情/主題詳情頁面的存取點地區查看。
配置訪問憑證
您可以選擇以下類型的訪問憑證。
長期訪問憑證:出於安全性考慮,不建議您使用長期訪問憑證,建議您使用臨時訪問憑證。對於需要便利性的情境,長期訪問憑證可以在較長時間內免除多次重新整理的麻煩。建議每三個月更換一次長期訪問憑證,以提高帳號的安全性。當長期訪問憑證泄露或者不再使用時,應該及時刪除或者禁用相關的訪問憑證,以免造成安全風險。
臨時訪問憑證:對於需要高安全性的情境,例如臨時授權應用訪問SMQ,建議使用臨時訪問憑證。臨時訪問憑證可以限制訪問的有效期間,從而減少訪問憑證泄露的風險。此外,臨時訪問憑證支援許可權控制,可以有效地避免許可權過大的問題。
使用長期訪問憑證
當您準備在應用或服務中長期訪問SMQ服務時,您可以通過RAM使用者的存取金鑰的方式訪問您的SMQ。
擷取RAM使用者的存取金鑰。
如何擷取RAM使用者的存取金鑰,請參見建立RAM使用者的AccessKey。
重要對於超過3個月的RAM使用者的存取金鑰,建議及時輪換。對於長期不用的RAM使用者的存取金鑰,建議及時禁用並刪除。以降低RAM使用者的存取金鑰被泄露的風險。
配置RAM使用者的存取金鑰。
環境變數
配置環境變數。
macOS
開啟終端。
執行以下命令。
nano ~/.bash_profile
在檔案末尾添加RAM使用者的存取金鑰。
export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
按
Ctrl
+X
,按Y
鍵確認儲存,然後按Enter
鍵退出檔案。輸入以下命令以使更改生效。
source ~/.bash_profile
執行以下命令驗證環境變數配置。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回樣本如下:
LTA**** moiEs****
Linux
開啟終端。
執行以下命令。
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
執行以下命令驗證環境變數配置。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回樣本如下:
LTA**** moiEs****
Windows
通過圖形化使用者介面GUI
以Windows 10為例,通過圖形化使用者介面以環境變數的方式設定RAM使用者存取金鑰的步驟如下:
在案頭按右鍵此電腦,選擇
。添加以下環境變數。
變數名
樣本值
ALIBABA_CLOUD_ACCESS_KEY_ID
LTA****
ALIBABA_CLOUD_ACCESS_KEY_SECRET
moiEs****
執行以下命令驗證環境變數配置。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回樣本如下:
LTA**** moiEs****
通過命令列提示符CMD
開啟命令列。
執行以下命令配置RAM使用者的存取金鑰。
set ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** set ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
執行以下命令以使更改生效。
setx ALIBABA_CLOUD_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%" setx ALIBABA_CLOUD_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%"
執行以下命令驗證環境變數配置。
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
成功返回樣本如下:
LTA**** moiEs****
通過Windows PowerShell
按下鍵盤上的
Win + X
按鍵組合。設定RAM使用者的存取金鑰。
僅當前會話有效
在彈出的菜單中,選擇Windows PowerShell。
為當前會話添加以下環境變數。
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "LTA****" $env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "moiEs****"
對所有新會話有效
在彈出的菜單中,選擇Windows PowerShell。
為所有新會話添加以下環境變數。
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::User) [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::User)
對所有使用者有效
在彈出的菜單中,選擇Windows PowerShell(管理員)。
為所有使用者添加以下環境變數。
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine) [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)
執行以下命令驗證環境變數配置。
Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回樣本如下:
LTA**** moiEs****
從環境變數中擷取RAM使用者的存取金鑰。
// 使用環境變數中擷取的RAM使用者的存取金鑰配置訪問憑證。 $accessId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); $accessKey = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
代碼嵌入
警告在代碼中嵌入訪問憑證會導致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源SMQ,造成損失。因此,建議您使用更安全的方式,例如從環境變數中擷取訪問憑證,來提高安全性。
$accessId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); $accessKey = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); $endPoint = "example.endpoint"; $client = new Client($endPoint, $accessId, $accessKey);
使用臨時訪問憑證
當您準備臨時訪問SMQ服務時,您可以配置STS臨時訪問憑證,通過STS服務頒發一個STS臨時訪問憑證。臨時訪問憑證無需透露您的RAM使用者存取金鑰,使您的SMQ訪問更加安全。
建立RAM使用者。
具體操作,請參見建立RAM使用者。
為RAM使用者授予
AliyunSTSAssumeRoleAccess
許可權。具體操作,請參見為RAM使用者授權。
使用RAM使用者調用STS服務的AssumeRole介面擷取STS臨時訪問憑證。
具體操作,請參見AssumeRole。
配置STS臨時訪問憑證。
環境變數
使用擷取的STS臨時訪問憑證配置環境變數。
macOS
開啟終端。
執行以下命令。
nano ~/.bash_profile
在檔案末尾添加從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
export MNS_ACCESS_KEY_ID=LTA**** export MNS_ACCESS_KEY_SECRET=moiEs**** export MNS_SESSION_TOKEN=CAES****
按
Ctrl
+X
,按Y
鍵確認儲存,然後按Enter
鍵退出檔案。執行以下命令以使更改生效。
source ~/.bash_profile
執行以下命令驗證環境變數配置。
echo $MNS_ACCESS_KEY_ID echo $MNS_ACCESS_KEY_SECRET echo $MNS_SESSION_TOKEN
成功返回樣本如下:
LTA**** moiEs**** CAES****
Linux
開啟終端。
執行以下命令。
sudo vim /etc/profile
在檔案末尾添加從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
export MNS_ACCESS_KEY_ID=LTA**** export MNS_ACCESS_KEY_SECRET=moiEs**** export MNS_SESSION_TOKEN=CAES****
按
ESC
鍵退出編輯模式,輸入:wq
,然後按Enter
鍵儲存並退出檔案。執行以下命令以使更改生效。
source /etc/profile
執行以下命令驗證環境變數配置。
echo $MNS_ACCESS_KEY_ID echo $MNS_ACCESS_KEY_SECRET echo $MNS_SESSION_TOKEN
成功返回樣本如下:
LTA**** moiEs**** CAES****
Windows
通過圖形化使用者介面GUI
以Windows 10為例,通過圖形化使用者介面以環境變數的方式設定STS臨時訪問憑證的步驟如下:
在案頭按右鍵此電腦,選擇
。添加以下環境變數。
變數名
樣本值
MNS_ACCESS_KEY_ID
LTA****
MNS_ACCESS_KEY_SECRET
moiEs****
MNS_SESSION_TOKEN
CAES****
執行以下命令驗證環境變數配置。
echo %MNS_ACCESS_KEY_ID% echo %MNS_ACCESS_KEY_SECRET% echo %MNS_SESSION_TOKEN%
成功返回樣本如下:
LTA**** moiEs**** CAES****
通過命令列提示符CMD
開啟命令列。
執行以下命令配置從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
set MNS_ACCESS_KEY_ID=LTA**** set MNS_ACCESS_KEY_SECRET=moiEs**** set MNS_SESSION_TOKEN=CAES****
執行以下命令以使更改生效。
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%"
執行以下命令驗證環境變數配置。
echo %MNS_ACCESS_KEY_ID% echo %MNS_ACCESS_KEY_SECRET% echo %MNS_SESSION_TOKEN%
成功返回樣本如下:
LTA**** moiEs**** CAES****
通過Windows PowerShell
按下鍵盤上的
Win + X
按鍵組合。設定STS臨時訪問憑證。
僅當前會話有效
在彈出的菜單中,選擇Windows PowerShell。
為當前會話添加以下環境變數。
$env:MNS_ACCESS_KEY_ID = "LTA****" $env:MNS_ACCESS_KEY_SECRET = "moiEs****" $env:MNS_SESSION_TOKEN = "CAE****"
對所有新會話有效
在彈出的菜單中,選擇Windows PowerShell。
為所有新會話添加以下環境變數。
[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)
對所有使用者有效
在彈出的菜單中,選擇Windows PowerShell(管理員)。
為所有使用者添加以下環境變數。
[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)
執行以下命令驗證環境變數配置。
Get-ChildItem env:MNS_ACCESS_KEY_ID Get-ChildItem env:MNS_ACCESS_KEY_SECRET Get-ChildItem env:MNS_SESSION_TOKEN
成功返回樣本如下:
LTA**** moiEs**** CAES****
從環境變數中擷取STS臨時訪問憑證。
$accessId = getenv("MNS_ACCESS_KEY_ID"); $accessKey = getenv("MNS_ACCESS_KEY_SECRET"); $securityToken = getenv("MNS_SESSION_TOKEN");
代碼嵌入
警告在代碼中嵌入訪問憑證會導致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源SMQ,造成損失。因此,建議您使用更安全的方式,例如從環境變數中擷取訪問憑證,來提高安全性。
$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);