文档

PHP配置访问凭证

更新时间:
重要

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

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

前提条件

在配置访问凭证前,您需要安装OSS PHP SDK。详情请参见安装

访问凭证

您可以选择以下类型的访问凭证。

  • 临时访问凭证:对于需要高安全性的场景,例如临时授权应用访问OSS,建议使用临时访问凭证。临时访问凭证可以限制访问的有效期,从而减少访问凭证泄露的风险。此外,临时访问凭证支持权限控制,可以有效地避免权限过大的问题。更多信息,请参见使用临时访问凭证

  • 长期访问凭证:出于安全性考虑,不建议您使用长期访问凭证,建议您使用临时访问凭证。对于需要便利性的场景,长期访问凭证可以在较长时间内免除多次刷新的麻烦。建议每三个月更换一次长期访问凭证,以提高账号的安全性。当长期访问凭证泄露或者不再使用时,应该及时删除或者禁用相关的访问凭证,以免造成安全风险。更多信息,请参见使用长期访问凭证

注意事项

本文介绍了如何在不同操作系统(例如macOS、Linux、Windows)中使用Shell命令配置环境变量。正确设置环境变量可确保命令行启动的程序能正确识别必要的配置。如果您是在IDE中,可能需要参考本文在IDE中单独设置环境变量,以便程序在该环境下正确运行。

使用临时访问凭证

当您准备临时使用PHP SDK访问OSS服务时,您可以选择以下方式配置临时访问凭证。

  • 配置STS临时访问凭证:如果您需要在规定时间内访问您的OSS,您可以通过STS服务颁发一个STS临时访问凭证。临时访问凭证无需透露您的RAM用户访问密钥,使您的OSS访问更加安全。

  • 配置RAM角色:如果您需要授权访问或跨账号访问OSS,您可以通过RAM用户扮演对应RAM角色的方式授权访问或跨账号访问OSS。

  • 配置ECS的RAM角色:如果你需要在阿里云的云服务器ECS中访问您的OSS,您可以通过ECS实例RAM角色的方式访问OSS。实例RAM角色允许您将一个角色关联到云服务器实例,在实例内部基于STS临时凭证通过指定方法访问OSS。STS临时凭证由系统自动生成和更新,应用程序可以使用指定的实例元数据URL获取临时凭证,无需特别管理。

配置STS临时访问凭证

  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 OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH****
        export OSS_ACCESS_KEY_SECRET=IrVTNZNy****  
        export OSS_SESSION_TOKEN=CAES+wMI****
      4. Ctrl+X,按Y键确认保存,然后按Enter键退出文件。

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

        source ~/.bash_profile
      6. 执行以下命令验证环境变量配置。

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET
        echo $OSS_SESSION_TOKEN

        成功返回示例如下:

        STS.NV5ZCwphFSXqscqUHAKbH****
        IrVTNZNy****  
        CAES+wMI****

      Linux

      1. 打开终端。

      2. 执行以下命令。

        sudo vim /etc/profile
      3. 在文件末尾添加从STS服务获取的临时访问凭证(包括AccessKeyId、AccessKeySecret、SecurityToken)。

        export OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH****
        export OSS_ACCESS_KEY_SECRET=IrVTNZNy**** 
        export OSS_SESSION_TOKEN=CAES+wMI****
      4. ESC键退出编辑模式,输入:wq,然后按Enter键保存并退出文件。

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

        source /etc/profile
      6. 执行以下命令验证环境变量配置。

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET
        echo $OSS_SESSION_TOKEN

        成功返回示例如下:

        STS.NV5ZCwphFSXqscqUHAKbH****
        IrVTNZNy****  
        CAES+wMI****

      Windows

      通过图形化用户界面GUI

      以Windows 10为例,通过图形化用户界面以环境变量的方式设置STS临时访问凭证的步骤如下:

      1. 在桌面右键单击此电脑,选择属性 > 高级系统设置 > 环境变量 > 系统变量/用户变量 > 新建

      2. 添加以下环境变量。

        变量名

        示例值

        OSS_ACCESS_KEY_ID

        STS.NV5ZCw****

        OSS_ACCESS_KEY_SECRET

        IrVTNZNy****

        OSS_SESSION_TOKEN

        CAES+wMI****

      3. 执行以下命令验证环境变量配置。

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%
        echo %OSS_SESSION_TOKEN%

        成功返回示例如下:

        STS.NV5ZCw****
        IrVTNZNy**** 
        CAES+wMI****

      通过命令行提示符CMD

      1. 打开命令行。

      2. 执行以下命令配置从STS服务获取的临时访问凭证(包括AccessKeyId、AccessKeySecret、SecurityToken)。

        set OSS_ACCESS_KEY_ID=STS.NV5ZCw****
        set OSS_ACCESS_KEY_SECRET=IrVTNZNy****
        set OSS_SESSION_TOKEN=CAES+wMI****
      3. 执行以下命令以使更改生效。

        setx OSS_ACCESS_KEY_ID "%OSS_ACCESS_KEY_ID%"
        setx OSS_ACCESS_KEY_SECRET "%OSS_ACCESS_KEY_SECRET%"
        setx OSS_SESSION_TOKEN "%OSS_SESSION_TOKEN%"
      4. 执行以下命令验证环境变量配置。

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%
        echo %OSS_SESSION_TOKEN%

        成功返回示例如下:

        STS.NV5ZCw****
        IrVTNZNy**** 
        CAES+wMI****

      通过Windows PowerShell

      1. 按下键盘上的Win + X组合键。

      2. 设置STS临时访问凭证。

        仅当前会话有效
        1. 在弹出的菜单中,选择Windows PowerShell

        2. 为当前会话添加以下环境变量。

          $env:OSS_ACCESS_KEY_ID = "STS.NV5ZCw****"
          $env:OSS_ACCESS_KEY_SECRET = "IrVTNZNy****"
          $env:OSS_SESSION_TOKEN = "CAES+wMI****"
        对所有新会话有效
        1. 在弹出的菜单中,选择Windows PowerShell

        2. 为所有新会话添加以下环境变量。

          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_ID', 'STS.NV5ZCw****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('OSS_SESSION_TOKEN', 'CAES+wMI****', [System.EnvironmentVariableTarget]::User)
        对所有用户有效
        1. 在弹出的菜单中,选择Windows PowerShell(管理员)

        2. 为所有用户添加以下环境变量。

          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_ID', 'STS.NV5ZCw****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('OSS_SESSION_TOKEN', 'CAES+wMI****', [System.EnvironmentVariableTarget]::Machine)
      3. 执行以下命令验证环境变量配置。

        Get-ChildItem env:OSS_ACCESS_KEY_ID
        Get-ChildItem env:OSS_ACCESS_KEY_SECRET
        Get-ChildItem env:OSS_SESSION_TOKEN

        成功返回示例如下:

        STS.NV5ZCw****
        IrVTNZNy**** 
        CAES+wMI****
    2. 从环境变量中获取STS临时访问凭证。

      // 使用环境变量中获取的STS临时访问密钥和安全令牌配置访问凭证。
      $provider = new EnvironmentVariableCredentialsProvider();

    代码嵌入

    警告

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

    // STS临时访问密钥AccessKey ID和AccessKey Secret。
    $accessKeyId = "yourAccessKeyId";
    $accessKeySecret = "yourAccessKeySecret";
    // STS安全令牌SecurityToken。
    $securityToken = "yourSecurityToken";
    // 使用代码嵌入的STS临时访问密钥和安全令牌配置访问凭证。
    $provider = new StaticCredentialsProvider($accessKeySecret, $accessKeySecret, $securityToken);

配置RAM角色

  1. 执行以下命令安装alibabacloud/credentials

    composer require alibabacloud/credentials
  2. 获取RAM用户的访问密钥。

    具体操作,请参见创建RAM用户的AccessKey

    重要

    为降低RAM用户的访问密钥被泄露的风险,对于超过3个月的RAM用户的访问密钥,建议及时轮换。对于长期不用的RAM用户的访问密钥,建议及时禁用并删除。

  3. 获取目标RAM角色的RamRoleArn。

    说明

    RamRoleArn是RAM角色的ARN信息,即需要扮演的角色ID。格式为acs:ram::$accountID:role/$roleName。$accountID为阿里云账号ID。$roleName为RAM角色名称。

    具体操作,请参见查看RAM角色

  4. 配置RAM用户的访问密钥和目标RAM角色的RAMRoleArn作为访问凭证。

    环境变量

    1. 使用获取的RAM用户的访问密钥和目标RAM角色的RamRoleArn配置环境变量。

      macOS

      1. 打开终端。

      2. 执行以下命令。

        nano ~/.bash_profile
      3. 在文件末尾添加获取的RAM用户的访问密钥和RAM角色的RamRoleArn。

        export OSS_ACCESS_KEY_ID=LTAI****
        export OSS_ACCESS_KEY_SECRET=IrVTNZNy****   
        export OSS_STS_ROLE_ARN=acs:ram::17464958********:role/ossststest
      4. Ctrl+X,按Y键确认保存,然后按Enter键退出文件。

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

        source /etc/profile
      6. 执行以下命令验证环境变量配置。

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET
        echo $OSS_STS_ROLE_ARN

        成功返回示例如下:

        LTAI****
        IrVTNZNy****   
        acs:ram::17464958********:role/ossststest

      Linux

      1. 打开终端。

      2. 执行以下命令。

        sudo vim /etc/profile
      3. 在文件末尾添加获取的RAM用户的访问密钥和RAM角色的RamRoleArn。

        export OSS_ACCESS_KEY_ID=LTAI****
        export OSS_ACCESS_KEY_SECRET=IrVTNZNy****   
        export OSS_STS_ROLE_ARN=acs:ram::17464958********:role/ossststest
      4. ESC键退出编辑模式,输入:wq,然后按Enter键保存并退出文件。

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

        source /etc/profile
      6. 执行以下命令验证环境变量配置。

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET
        echo $OSS_STS_ROLE_ARN

        成功返回示例如下:

        LTAI****
        IrVTNZNy****   
        acs:ram::17464958********:role/ossststest

      Windows

      通过图形化用户界面GUI

      以Windows 10为例,通过图形化用户界面以环境变量的方式设置RAM用户的访问密钥和目标RAM角色的RAMRoleArn步骤如下:

      1. 在桌面右键单击此电脑,选择属性 > 高级系统设置 > 环境变量 > 系统变量/用户变量 > 新建

      2. 添加以下环境变量。

        变量名

        示例值

        OSS_ACCESS_KEY_ID

        LTAI****

        OSS_ACCESS_KEY_SECRET

        IrVTNZNy****

        OSS_STS_ROLE_ARN

        acs:ram::17464958********:role/ossststest

      3. 执行以下命令验证环境变量配置。

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET
        echo $OSS_STS_ROLE_ARN

        成功返回示例如下:

        LTAI****
        IrVTNZNy**** 
        acs:ram::17464958********:role/ossststest

      通过命令行提示符CMD

      1. 打开命令行。

      2. 执行以下命令配置RAM用户的访问密钥和RAM角色的RamRoleArn。

        set OSS_ACCESS_KEY_ID=LTAI****
        set OSS_ACCESS_KEY_SECRET=IrVTNZNy****  
        set OSS_STS_ROLE_ARN=acs:ram::17464958********:role/ossststest
      3. 执行以下命令以使更改生效。

        setx OSS_ACCESS_KEY_ID "%OSS_ACCESS_KEY_ID%"
        setx OSS_ACCESS_KEY_SECRET "%OSS_ACCESS_KEY_SECRET%"
        setx OSS_STS_ROLE_ARN "%OSS_STS_ROLE_ARN%"
      4. 执行以下命令验证环境变量配置。

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%
        echo %OSS_STS_ROLE_ARN%

        成功返回示例如下:

        LTAI****
        IrVTNZNy****  
        acs:ram::17464958********:role/ossststest

      通过Windows PowerShell

      1. 按下键盘上的Win + X组合键。

      2. 设置RAM用户的访问密钥和目标RAM角色的RAMRoleArn。

        仅当前会话有效
        1. 在弹出的菜单中,选择Windows PowerShell

        2. 为当前会话添加以下环境变量。

          $env:OSS_ACCESS_KEY_ID = "LTAI****"
          $env:OSS_ACCESS_KEY_SECRET = "IrVTNZNy****"
          $env:OSS_STS_ROLE_ARN = "acs:ram::17464958********:role/ossststest"
        对所有新会话有效
        1. 在弹出的菜单中,选择Windows PowerShell

        2. 为所有新会话添加以下环境变量。

          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_ID', 'LTAI****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('OSS_STS_ROLE_ARN', 'acs:ram::17464958********:role/ossststest', [System.EnvironmentVariableTarget]::User)
        对所有用户有效
        1. 在弹出的菜单中,选择Windows PowerShell(管理员)

        2. 为所有用户添加以下环境变量。

          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_ID', 'LTAI****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('OSS_STS_ROLE_ARN', 'acs:ram::17464958********:role/ossststest', [System.EnvironmentVariableTarget]::Machine)
      3. 执行以下命令验证环境变量配置。

        Get-ChildItem env:OSS_ACCESS_KEY_ID
        Get-ChildItem env:OSS_ACCESS_KEY_SECRET
        Get-ChildItem env:OSS_STS_ROLE_ARN

        成功返回示例如下:

        LTAI****
        IrVTNZNy**** 
        acs:ram::17464958********:role/ossststest
    2. 从环境变量中获取RAM用户的访问密钥和RAM角色的RamRoleArn。

      <?php
      
      if (is_file(__DIR__ . '/../autoload.php')) {
          require_once __DIR__ . '/../autoload.php';
        }
      if (is_file(__DIR__ . '/../vendor/autoload.php')) {
        require_once __DIR__ . '/../vendor/autoload.php';
      }
      
      use OSS\Credentials\CredentialsProvider;
      use AlibabaCloud\Credentials\Credential;
      use OSS\Credentials\StaticCredentialsProvider;
      use OSS\Core\OssException;
      use OSS\OssClient;
      class AlibabaCloudCredentialsWrapper implements CredentialsProvider{
          /**
           * @var \OSS\Credentials\Credentials
           */
          private $wrapper;
          public function __construct($wrapper){
              $this->wrapper = $wrapper;
          }
          public function getCredentials(){
              $ak = $this->wrapper->getAccessKeyId();
              $sk = $this->wrapper->getAccessKeySecret();
              $token = $this->wrapper->getSecurityToken();
              return new StaticCredentialsProvider($ak, $sk, $token);
          }
      }
      $ramRoleArn  = new Credential(array(
          // 填写Credential类型,固定值为ram_role_arn。
          'type'      => 'ram_role_arn',
          // 从环境变量中获取RAM用户的访问密钥(AccessKey ID和AccessKey Secret)。 
          'access_key_id' => getenv('OSS_ACCESS_KEY_ID'),
          'access_key_secret' => getenv('OSS_ACCESS_KEY_SECRET'),
          // 从环境变量中获取RAM角色的RamRoleArn。即需要扮演的角色ID,格式为acs:ram::$accountID:role/$roleName。
          'role_arn' => getenv('OSS_STS_ROLE_ARN'),
          // 自定义角色会话名称,用于区分不同的令牌。
          'role_session_name' => 'yourRoleSessionName',
          // 自定义权限策略。
          'policy'            => '',
      ));
      // 使用环境变量中获取的RAM用户的访问密钥和RAM角色的RamRoleArn配置访问凭证。
      $providerWarpper = new AlibabaCloudCredentialsWrapper($ramRoleArn);
      $provider = $providerWarpper->getCredentials();
      $config = array(
          'provider' => $provider,
          // 以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其他Region请按实际情况填写。
          'endpoint'=> 'https://oss-cn-hangzhou.aliyuncs.com'
      );
      try {
          $ossClient = new OssClient($config);
          var_dump($ossClient);
      } catch (OssException $e) {
          print $e->getMessage();
      }

    代码嵌入

    警告

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

    <?php
    
    if (is_file(__DIR__ . '/../autoload.php')) {
        require_once __DIR__ . '/../autoload.php';
      }
    if (is_file(__DIR__ . '/../vendor/autoload.php')) {
      require_once __DIR__ . '/../vendor/autoload.php';
    }
    
    use OSS\Credentials\CredentialsProvider;
    use AlibabaCloud\Credentials\Credential;
    use OSS\Credentials\StaticCredentialsProvider;
    use OSS\Core\OssException;
    use OSS\OssClient;
    class AlibabaCloudCredentialsWrapper implements CredentialsProvider{
        /**
         * @var \OSS\Credentials\Credentials
         */
        private $wrapper;
        public function __construct($wrapper){
            $this->wrapper = $wrapper;
        }
        public function getCredentials(){
            $ak = $this->wrapper->getAccessKeyId();
            $sk = $this->wrapper->getAccessKeySecret();
            $token = $this->wrapper->getSecurityToken();
            return new StaticCredentialsProvider($ak, $sk, $token);
        }
    }
    $ramRoleArn  = new Credential(array(
        // 填写Credential类型,固定值为ram_role_arn。
        'type'      => 'ram_role_arn',
        // 填写RAM用户的访问密钥(AccessKey ID和AccessKey Secret)。 
        'access_key_id' => 'OSS_ACCESS_KEY_ID',
        'access_key_secret' => 'OSS_ACCESS_KEY_SECRET',
        // 填写RAM角色的RamRoleArn。即需要扮演的角色ID,格式为acs:ram::$accountID:role/$roleName。
        'role_arn' => 'OSS_STS_ROLE_ARN',
        // 自定义角色会话名称,用于区分不同的令牌。
        'role_session_name' => 'yourRoleSessionName',
        // 自定义权限策略。
        'policy'            => '',
    ));
    
    $providerWarpper = new AlibabaCloudCredentialsWrapper($ramRoleArn);
    $provider = $providerWarpper->getCredentials();
    $config = array(
        'provider' => $provider,
        // 以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其他Region请按实际情况填写。
        'endpoint'=> 'https://oss-cn-hangzhou.aliyuncs.com'
    );
    try {
        $ossClient = new OssClient($config);
        var_dump($ossClient);
    } catch (OssException $e) {
        print $e->getMessage();
    }

配置ECS的RAM角色

  1. 执行以下命令安装alibabacloud/credentials

    composer require alibabacloud/credentials
  2. 为ECS实例授予RAM角色。

    具体操作,请参见授予实例RAM角色

  3. 配置ECS的RAM角色作为访问凭证。

    <?php
    
    if (is_file(__DIR__ . '/../autoload.php')) {
        require_once __DIR__ . '/../autoload.php';
      }
    if (is_file(__DIR__ . '/../vendor/autoload.php')) {
      require_once __DIR__ . '/../vendor/autoload.php';
    }
    
    use OSS\Credentials\CredentialsProvider;
    use AlibabaCloud\Credentials\Credential;
    use OSS\Credentials\StaticCredentialsProvider;
    use OSS\Core\OssException;
    use OSS\OssClient;
    class AlibabaCloudCredentialsWrapper implements CredentialsProvider{
        /**
         * @var \OSS\Credentials\Credentials
         */
        private $wrapper;
        public function __construct($wrapper){
            $this->wrapper = $wrapper;
        }
        public function getCredentials(){
            $ak = $this->wrapper->getAccessKeyId();
            $sk = $this->wrapper->getAccessKeySecret();
            $token = $this->wrapper->getSecurityToken();
            return new StaticCredentialsProvider($ak, $sk, $token);
        }
    }
    $ecsRamRole = new Credential(array(
        // 填写Credential类型,固定值为ecs_ram_role。
        'type'      => 'ecs_ram_role',
        // 填写角色名称。
        'role_name' => 'EcsRamRoleOssTest',
    ));
    // 使用环境变量中获取的RAM用户的访问密钥和RAM角色的RamRoleArn配置访问凭证。
    $providerWarpper = new AlibabaCloudCredentialsWrapper($ecsRamRole);
    $provider = $providerWarpper->getCredentials();
    $config = array(
        'provider' => $provider,
        // 以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其他Region请按实际情况填写。
        'endpoint'=> 'https://oss-cn-hangzhou.aliyuncs.com'
    );
    try {
        $ossClient = new OssClient($config);
    } catch (OssException $e) {
        print $e->getMessage();
    }

使用长期访问凭证

当您准备在应用或服务中长期使用PHP SDK访问OSS服务时,您可以通过以下方式配置长期访问凭证。

配置RAM用户的访问密钥:如果您需要长期访问您的OSS,您可以通过RAM用户的访问密钥的方式访问您的OSS。

配置RAM用户的访问密钥

  1. 获取RAM用户的访问密钥。

    如何获取RAM用户的访问密钥,请参见创建RAM用户的AccessKey

    重要

    对于超过3个月的RAM用户的访问密钥,建议及时轮换。对于长期不用的RAM用户的访问密钥,建议及时禁用并删除。以此降低RAM用户的访问密钥被泄露的风险。

  2. 配置RAM用户的访问密钥。

    环境变量

    1. 配置环境变量。

      macOS

      1. 打开终端。

      2. 执行以下命令。

        nano ~/.bash_profile
      3. 在文件末尾添加RAM用户的访问密钥。

        export OSS_ACCESS_KEY_ID=LTAI****
        export OSS_ACCESS_KEY_SECRET=IrVTNZNy****  
      4. Ctrl+X,按Y键确认保存,然后按Enter键退出文件。

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

        source ~/.bash_profile
      6. 执行以下命令验证环境变量配置。

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

        成功返回示例如下:

        LTAI****
        IrVTNZNy****  

      Linux

      1. 打开终端。

      2. 执行以下命令。

        sudo vim /etc/profile
      3. 在文件末尾添加RAM用户的访问密钥。

        export OSS_ACCESS_KEY_ID=LTAI****
        export OSS_ACCESS_KEY_SECRET=IrVTNZNy****  
      4. ESC键退出编辑模式,输入:wq,然后按Enter键保存并退出文件。

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

        source /etc/profile
      6. 执行以下命令验证环境变量配置。

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

        成功返回示例如下:

        LTAI****
        IrVTNZNy****  

      Windows

      通过图形化用户界面GUI

      以Windows 10为例,通过图形化用户界面以环境变量的方式设置RAM用户访问密钥的步骤如下:

      1. 在桌面右键单击此电脑,选择属性 > 高级系统设置 > 环境变量 > 系统变量/用户变量 > 新建

      2. 添加以下环境变量。

        变量名

        示例值

        OSS_ACCESS_KEY_ID

        LTAI****

        OSS_ACCESS_KEY_SECRET

        IrVTNZNy****

      3. 执行以下命令验证环境变量配置。

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

        成功返回示例如下:

        LTAI****
        IrVTNZNy**** 

      通过命令行提示符CMD

      1. 打开命令行。

      2. 执行以下命令配置RAM用户的访问密钥。

        set OSS_ACCESS_KEY_ID=LTAI****
        set OSS_ACCESS_KEY_SECRET=IrVTNZNy****  
      3. 执行以下命令以使更改生效。

        setx OSS_ACCESS_KEY_ID "%OSS_ACCESS_KEY_ID%"
        setx OSS_ACCESS_KEY_SECRET "%OSS_ACCESS_KEY_SECRET%"
      4. 执行以下命令验证环境变量配置。

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%

        成功返回示例如下:

        LTAI****
        IrVTNZNy****  

      通过Windows PowerShell

      1. 按下键盘上的Win + X组合键。

      2. 设置RAM用户的访问密钥。

        仅当前会话有效
        1. 在弹出的菜单中,选择Windows PowerShell

        2. 为当前会话添加以下环境变量。

          $env:OSS_ACCESS_KEY_ID = "LTAI****"
          $env:OSS_ACCESS_KEY_SECRET = "IrVTNZNy****"
        对所有新会话有效
        1. 在弹出的菜单中,选择Windows PowerShell

        2. 为所有新会话添加以下环境变量。

          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_ID', 'LTAI****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::User)
        对所有用户有效
        1. 在弹出的菜单中,选择Windows PowerShell(管理员)

        2. 为所有用户添加以下环境变量。

          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_ID', 'LTAI****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::Machine)
      3. 执行以下命令验证环境变量配置。

        Get-ChildItem env:OSS_ACCESS_KEY_ID
        Get-ChildItem env:OSS_ACCESS_KEY_SECRET

        成功返回示例如下:

        LTAI****
        IrVTNZNy**** 
    2. 从环境变量中获取RAM用户的访问密钥。

      // 使用环境变量中获取的STS临时访问密钥和安全令牌配置访问凭证。
      $provider = new EnvironmentVariableCredentialsProvider();

    代码嵌入

    警告

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

    // 从环境变量中获取RAM用户的访问密钥(AccessKey ID和AccessKey Secret)。
    $accessKeyId = "yourAccessKeyId";
    $accessKeySecret = "yourAccessKeySecret";
    // 使用代码嵌入的RAM用户的访问密钥配置访问凭证。
    $provider = new StaticCredentialsProvider($accessKeyId, $accessKeySecret);

  • 本页导读 (1)