全部產品
Search
文件中心

Simple Message Queue (formerly MNS):配置訪問網域名稱及憑證

更新時間:Sep 07, 2024

使用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的存取點資訊,您可以在控制台的隊列詳情/主題詳情頁面的存取點地區查看。image

配置訪問憑證

您可以選擇以下類型的訪問憑證。

  • 長期訪問憑證:出於安全性考慮,不建議您使用長期訪問憑證,建議您使用臨時訪問憑證。對於需要便利性的情境,長期訪問憑證可以在較長時間內免除多次重新整理的麻煩。建議每三個月更換一次長期訪問憑證,以提高帳號的安全性。當長期訪問憑證泄露或者不再使用時,應該及時刪除或者禁用相關的訪問憑證,以免造成安全風險。

  • 臨時訪問憑證:對於需要高安全性的情境,例如臨時授權應用訪問SMQ,建議使用臨時訪問憑證。臨時訪問憑證可以限制訪問的有效期間,從而減少訪問憑證泄露的風險。此外,臨時訪問憑證支援許可權控制,可以有效地避免許可權過大的問題。

使用長期訪問憑證

當您準備在應用或服務中長期訪問SMQ服務時,您可以通過RAM使用者的存取金鑰的方式訪問您的SMQ

  1. 擷取RAM使用者的存取金鑰。

    如何擷取RAM使用者的存取金鑰,請參見建立RAM使用者的AccessKey

    重要

    對於超過3個月的RAM使用者的存取金鑰,建議及時輪換。對於長期不用的RAM使用者的存取金鑰,建議及時禁用並刪除。以降低RAM使用者的存取金鑰被泄露的風險。

  2. 配置RAM使用者的存取金鑰。

    環境變數

    1. 配置環境變數。

      macOS

      1. 開啟終端。

      2. 執行以下命令。

        nano ~/.bash_profile
      3. 在檔案末尾添加RAM使用者的存取金鑰。

        export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA****
        export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs**** 
      4. Ctrl+X,按Y鍵確認儲存,然後按Enter鍵退出檔案。

      5. 輸入以下命令以使更改生效。

        source ~/.bash_profile
      6. 執行以下命令驗證環境變數配置。

        echo $ALIBABA_CLOUD_ACCESS_KEY_ID
        echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET

        成功返回樣本如下:

        LTA****
        moiEs****  

      Linux

      1. 開啟終端。

      2. 執行以下命令。

        sudo vim /etc/profile
      3. 在檔案末尾添加RAM使用者的存取金鑰。

        export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA****
        export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs**** 
      4. ESC鍵退出編輯模式,輸入:wq,然後按Enter鍵儲存並退出檔案。

      5. 輸入以下命令以使更改生效。

        source /etc/profile
      6. 執行以下命令驗證環境變數配置。

        echo $ALIBABA_CLOUD_ACCESS_KEY_ID
        echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET

        成功返回樣本如下:

        LTA****
        moiEs**** 

      Windows

      通過圖形化使用者介面GUI

      以Windows 10為例,通過圖形化使用者介面以環境變數的方式設定RAM使用者存取金鑰的步驟如下:

      1. 在案頭按右鍵此電腦,選擇屬性 > 進階系統設定 > 環境變數 > 系統變數/使用者變數 > 建立

      2. 添加以下環境變數。

        變數名

        樣本值

        ALIBABA_CLOUD_ACCESS_KEY_ID

        LTA****

        ALIBABA_CLOUD_ACCESS_KEY_SECRET

        moiEs****

      3. 執行以下命令驗證環境變數配置。

        echo $ALIBABA_CLOUD_ACCESS_KEY_ID
        echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET

        成功返回樣本如下:

        LTA****
        moiEs**** 

      通過命令列提示符CMD

      1. 開啟命令列。

      2. 執行以下命令配置RAM使用者的存取金鑰。

        set ALIBABA_CLOUD_ACCESS_KEY_ID=LTA****
        set ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****  
      3. 執行以下命令以使更改生效。

        setx ALIBABA_CLOUD_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%"
        setx ALIBABA_CLOUD_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%"
      4. 執行以下命令驗證環境變數配置。

        echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
        echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%

        成功返回樣本如下:

        LTA****
        moiEs****  

      通過Windows PowerShell

      1. 按下鍵盤上的Win + X按鍵組合。

      2. 設定RAM使用者的存取金鑰。

        僅當前會話有效
        1. 在彈出的菜單中,選擇Windows PowerShell

        2. 為當前會話添加以下環境變數。

          $env:ALIBABA_CLOUD_ACCESS_KEY_ID = "LTA****"
          $env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "moiEs****"
        對所有新會話有效
        1. 在彈出的菜單中,選擇Windows PowerShell

        2. 為所有新會話添加以下環境變數。

          [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::User)
        對所有使用者有效
        1. 在彈出的菜單中,選擇Windows PowerShell(管理員)

        2. 為所有使用者添加以下環境變數。

          [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)
      3. 執行以下命令驗證環境變數配置。

        Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID
        Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET

        成功返回樣本如下:

        LTA****
        moiEs**** 
    2. 從環境變數中擷取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訪問更加安全。

  1. 建立RAM使用者。

    具體操作,請參見建立RAM使用者

  2. 為RAM使用者授予 AliyunSTSAssumeRoleAccess許可權。

    具體操作,請參見為RAM使用者授權

  3. 使用RAM使用者調用STS服務的AssumeRole介面擷取STS臨時訪問憑證。

    具體操作,請參見AssumeRole

  4. 配置STS臨時訪問憑證。

    環境變數

    1. 使用擷取的STS臨時訪問憑證配置環境變數。

      macOS

      1. 開啟終端。

      2. 執行以下命令。

        nano ~/.bash_profile
      3. 在檔案末尾添加從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。

        export MNS_ACCESS_KEY_ID=LTA****
        export MNS_ACCESS_KEY_SECRET=moiEs****
        export MNS_SESSION_TOKEN=CAES****
      4. Ctrl+X,按Y鍵確認儲存,然後按Enter鍵退出檔案。

      5. 執行以下命令以使更改生效。

        source ~/.bash_profile
      6. 執行以下命令驗證環境變數配置。

        echo $MNS_ACCESS_KEY_ID
        echo $MNS_ACCESS_KEY_SECRET
        echo $MNS_SESSION_TOKEN

        成功返回樣本如下:

        LTA****
        moiEs**** 
        CAES****

      Linux

      1. 開啟終端。

      2. 執行以下命令。

        sudo vim /etc/profile
      3. 在檔案末尾添加從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。

        export MNS_ACCESS_KEY_ID=LTA****
        export MNS_ACCESS_KEY_SECRET=moiEs****
        export MNS_SESSION_TOKEN=CAES****
      4. ESC鍵退出編輯模式,輸入:wq,然後按Enter鍵儲存並退出檔案。

      5. 執行以下命令以使更改生效。

        source /etc/profile
      6. 執行以下命令驗證環境變數配置。

        echo $MNS_ACCESS_KEY_ID
        echo $MNS_ACCESS_KEY_SECRET
        echo $MNS_SESSION_TOKEN

        成功返回樣本如下:

        LTA****
        moiEs**** 
        CAES****

      Windows

      通過圖形化使用者介面GUI

      以Windows 10為例,通過圖形化使用者介面以環境變數的方式設定STS臨時訪問憑證的步驟如下:

      1. 在案頭按右鍵此電腦,選擇屬性 > 進階系統設定 > 環境變數 > 系統變數/使用者變數 > 建立

      2. 添加以下環境變數。

        變數名

        樣本值

        MNS_ACCESS_KEY_ID

        LTA****

        MNS_ACCESS_KEY_SECRET

        moiEs****

        MNS_SESSION_TOKEN

        CAES****

      3. 執行以下命令驗證環境變數配置。

        echo %MNS_ACCESS_KEY_ID%
        echo %MNS_ACCESS_KEY_SECRET%
        echo %MNS_SESSION_TOKEN%

        成功返回樣本如下:

        LTA****
        moiEs**** 
        CAES****

      通過命令列提示符CMD

      1. 開啟命令列。

      2. 執行以下命令配置從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。

        set MNS_ACCESS_KEY_ID=LTA****
        set MNS_ACCESS_KEY_SECRET=moiEs**** 
        set MNS_SESSION_TOKEN=CAES****
      3. 執行以下命令以使更改生效。

        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%"
      4. 執行以下命令驗證環境變數配置。

        echo %MNS_ACCESS_KEY_ID%
        echo %MNS_ACCESS_KEY_SECRET%
        echo %MNS_SESSION_TOKEN%

        成功返回樣本如下:

        LTA****
        moiEs**** 
        CAES****

      通過Windows PowerShell

      1. 按下鍵盤上的Win + X按鍵組合。

      2. 設定STS臨時訪問憑證。

        僅當前會話有效
        1. 在彈出的菜單中,選擇Windows PowerShell

        2. 為當前會話添加以下環境變數。

          $env:MNS_ACCESS_KEY_ID = "LTA****"
          $env:MNS_ACCESS_KEY_SECRET = "moiEs****"
          $env:MNS_SESSION_TOKEN = "CAE****"
        對所有新會話有效
        1. 在彈出的菜單中,選擇Windows PowerShell

        2. 為所有新會話添加以下環境變數。

          [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)
        對所有使用者有效
        1. 在彈出的菜單中,選擇Windows PowerShell(管理員)

        2. 為所有使用者添加以下環境變數。

          [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)
      3. 執行以下命令驗證環境變數配置。

        Get-ChildItem env:MNS_ACCESS_KEY_ID
        Get-ChildItem env:MNS_ACCESS_KEY_SECRET
        Get-ChildItem env:MNS_SESSION_TOKEN

        成功返回樣本如下:

        LTA****
        moiEs**** 
        CAES****
    2. 從環境變數中擷取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);