配置访问域名及凭证

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

使用Python SDK发起SMQ请求,您需要配置接入点及访问凭证。阿里云服务会通过访问凭证验证您的身份信息和访问权限。您可以根据使用场景对认证和授权的要求,选择不同类型的访问凭证。本文介绍如何配置接入点、临时访问凭证、长期访问凭证。

配置访问域名

  1. 下载最新版Python SDK,解压后进入aliyun-mns-python-sdk子目录。

  2. 打开sample.cfg文件,配置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用户的访问密钥配置访问凭证。
      accid = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
      acckey = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

    代码嵌入

    警告

    在代码中嵌入访问凭证会导致安全问题。如果访问凭证被泄漏,攻击者就可以使用该访问凭证来访问您的资源SMQ,造成损失。因此,建议您使用更安全的方式,例如从环境变量中获取访问凭证,来提高安全性。

    accid,acckey,endpoint,token = MNSSampleCommon.LoadConfig() 
    my_account = Account(endpoint, accid, acckey, token)

使用临时访问凭证

当您准备临时访问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临时访问凭证。

      accid = os.getenv("MNS_ACCESS_KEY_ID") 
      acckey = os.getenv("MNS_ACCESS_KEY_SECRET") 
      token = os.getenv("MNS_SESSION_TOKEN") or "" 

    代码嵌入

    警告

    在代码中嵌入访问凭证会导致安全问题。如果访问凭证被泄漏,攻击者就可以使用该访问凭证来访问您的资源SMQ,造成损失。因此,建议您使用更安全的方式,例如从环境变量中获取访问凭证,来提高安全性。

    accid = os.getenv("MNS_ACCESS_KEY_ID") 
    acckey = os.getenv("MNS_ACCESS_KEY_SECRET") 
    token = os.getenv("MNS_SESSION_TOKEN") or "" 
    endpoint = "example.endpoint" 
    my_account = Account(endpoint, accid, acckey, token)