すべてのプロダクト
Search
ドキュメントセンター

:アクセス資格情報の設定

最終更新日:Feb 27, 2024

Object Storage Service (OSS) SDK for Goを使用してリクエストを開始するには、アクセス資格情報を設定する必要があります。 Alibaba Cloudサービスは、アクセス資格情報を使用してID情報とアクセス権限を確認します。 認証と承認の要件に基づいて、さまざまなタイプのアクセス資格情報を選択できます。 このトピックでは、一時的なアクセス資格情報と長期的なアクセス資格情報を設定する方法について説明します。

前提条件

OSS SDK for Goがインストールされています。 詳細については、「インストール」をご参照ください。

アクセス資格情報

次のタイプのアクセス資格情報から選択できます。

  • 一時的なアクセス資格情報: OSSにアクセスするアプリケーションの一時的なアクセス許可など、高いセキュリティが必要なシナリオでは、一時的なアクセス資格情報を使用することを推奨します。 一時アクセス資格情報には、アクセスの有効期間があります。 これにより、アクセス資格情報の漏洩を防ぐことができます。 一時的なアクセス資格情報は、過度のアクセス許可によって引き起こされるセキュリティリスクを防ぐために、きめ細かいアクセス制御をサポートします。 詳細については、「一時的なアクセス資格情報の使用」をご参照ください。

  • 長期アクセス資格情報: セキュリティを確保するため、長期アクセス資格情報を使用しないことを推奨します。 利便性を必要とするシナリオでは、長期アクセス資格情報により、長期間の複数の更新が不要になります。 Alibaba Cloudアカウントのセキュリティを確保するため、3か月ごとに長期アクセス資格情報を変更することを推奨します。 長期アクセス資格情報が漏洩した場合、または使用されなくなった場合は、長期アクセス資格情報を削除または無効にして、セキュリティリスクを防ぐことができます。 詳細については、「長期アクセス資格情報の使用」をご参照ください。

使用上の注意

このトピックでは、シェルコマンドを実行して、macOS、Linux、Windowsなどのさまざまなオペレーティングシステムで環境変数を設定する方法について説明します。 環境変数を適切に設定すると、コマンドラインで起動したプログラムは必要な設定を正しく認識できます。 統合開発環境 (IDE) でプログラムを起動する場合は、このトピックを参照して、IDEで環境変数を個別に設定する必要があります。 このようにして、プログラムは期待どおりに実行できます。

一時的なアクセス資格情報の使用

OSS SDK for Goを使用してOSSリソースに一時的にアクセスする場合は、次のいずれかの方法を使用して一時的なアクセス資格情報を設定できます。

  • Security Token Service (STS) の一時的なアクセス資格情報の設定: 特定の期間内にOSSにアクセスする場合は、STSを使用して一時的なアクセス資格情報を取得できます。 STSによって提供される一時的なアクセス資格情報は、RAMユーザーのAccessKeyペアを公開しません。 これにより、OSSリソースへのアクセスが安全になります。

  • RAMロールの設定: Alibaba CloudアカウントのRAMユーザーまたは別のAlibaba CloudアカウントのRAMユーザーにOSSリソースへのアクセス権限を付与する場合は、そのRAMユーザーのRAMロールを設定できます。

  • ECS (Elastic Compute Service) インスタンスのRAMロールの設定: ECSインスタンスからOSSリソースにアクセスする場合、ECSインスタンスのRAMロールを使用してOSSリソースにアクセスできます。 RAMロールをECSインスタンスにアタッチして、STSから取得した一時的な資格情報を使用してインスタンスからOSSリソースにアクセスできます。 STSの一時的なアクセス資格情報は自動的に生成および更新されます。 アプリケーションは、インスタンスメタデータURLを使用してSTSの一時的なアクセス資格情報を取得できます。

STSの一時的なアクセス資格情報の設定

  1. RAM ユーザーを作成します。

    RAMユーザーの作成方法の詳細については、「RAMユーザーの作成」をご参照ください。

  2. AliyunSTSAssumeRoleAccessポリシーをRAMユーザーにアタッチします。

    詳細については、「RAM ユーザーへの権限の付与」をご参照ください。

  3. RAMユーザーを使用してSTSのAssumeRole操作を呼び出し、一時的なアクセス資格情報を取得します。

    詳細については、「AssumeRole」をご参照ください。

  4. STSによって提供される一時的なアクセス資格情報を設定します。

    環境変数

    1. STSによって提供される一時的なアクセス資格情報を使用して、環境変数を設定します。

      macOS

      1. ターミナルを開きます。

      2. 以下のコマンドを実行します。

        nano ~/.bash_profile
      3. STSから取得した一時的なアクセス資格情報 (AccessKeyId、AccessKeySecret、およびSecurityToken) をファイルの最後に追加します。

        export OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH ****
        エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn ****
        export OSS_SESSION_TOKEN=CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ˙˙∂ ∂ + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt **** 
      4. Ctrl + Xを押し、Yを押してファイルを保存し、Enterを押してファイルを閉じます。

      5. 変更を有効にするには、次のコマンドを実行します。

        source ~/.bash_profile
      6. 次のコマンドを実行して、環境変数の設定を確認します。

        エコー $OSS_ACCESS_KEYID
        エコー $OSS_ACCESS_KEY_SECRET
        エコー $OSS_SESSION_トークン 

        サンプル成功応答:

        STS.NV5ZCwphFSXqscqUHAKbH ****
        IrVTNZNy5yQelTETg0cZML3TQn ****
        CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ˙∂ ∂ ˙+ + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + **** 

      Linux

      1. ターミナルを開きます。

      2. 以下のコマンドを実行します。

        sudo vim /etc/profile
      3. STSから取得した一時的なアクセス資格情報 (AccessKeyId、AccessKeySecret、およびSecurityToken) をファイルの最後に追加します。

        export OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH ****
        エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn ****
        export OSS_SESSION_TOKEN=CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ˙˙∂ ∂ + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt **** 
      4. [Esc] を押して編集モードを終了します。 次に、:wqと入力し、enterを押してファイルを保存して閉じます。

      5. 変更を有効にするには、次のコマンドを実行します。

        source /etc/profile
      6. 次のコマンドを実行して、環境変数の設定を確認します。

        エコー $OSS_ACCESS_KEYID
        エコー $OSS_ACCESS_KEY_SECRET
        エコー $OSS_SESSION_トークン 

        サンプル成功応答:

        STS.NV5ZCwphFSXqscqUHAKbH ****
        IrVTNZNy5yQelTETg0cZML3TQn ****
        CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ˙∂ ∂ ˙+ + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + **** 

      Windows

      1. コマンドラインインターフェイス (CLI) を開きます。

      2. 次のコマンドを実行して、STSから取得した一時的なアクセス資格情報 (AccessKeyId、AccessKeySecret、およびSecurityToken) を設定します。

        set OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH ****
        セットOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn ****
        set OSS_SESSION_TOKEN=CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ð ∂ ∂ 3qaPer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt **** 
      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. 次のコマンドを実行して、環境変数の設定を確認します。

        エコー % OSS_ACCESS_KEY_ID %
        エコー % OSS_ACCESS_KEY_SECRET %
        エコー % OSS_SESSION_TOKEN % 

        サンプル成功応答:

        STS.NV5ZCwphFSXqscqUHAKbH ****
        IrVTNZNy5yQelTETg0cZML3TQn ****
        CAES + wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s ˙∂ ∂ ˙+ + mRR9KAbHUefqH + rdjZqjTF7p2m1wJXP8S6k + **** 
    2. STSが提供する一時的なアクセス資格情報を環境変数から取得します。

      パッケージメイン
      
      import (import (import)
      "fmt"
      「github.com/aliyun/aliyun-oss-go-sdk/oss」
      "os"
      )
      
      func main() {
      // 環境変数から取得した一時的なAccessKeyペアとセキュリティトークンを使用して、アクセス資格情報を設定します。 
      	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
      if err! =nil {
      fmt.Println("Error:", err)
      os.Exit(-1)
      }
          
      	// Create an OSSClient instance. 
      	// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
      	client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
      if err! =nil {
      fmt.Println("Error:", err)
      os.Exit(-1)
      }
      } 

    コードにアクセス資格情報を埋め込む

    警告

    コードにアクセス資格情報を埋め込むと、セキュリティの問題が発生する可能性があります。 アクセス資格情報が漏洩した場合、攻撃者はアクセス資格情報を使用してOSSリソースにアクセスできます。これにより、データが失われる可能性があります。 セキュリティを確保するために、環境変数からアクセス資格情報を取得するなど、より安全な方法を使用することを推奨します。

    パッケージメイン
    
    import (import (import)
        "fmt"
        "github.com/aliyun/aliyun-oss-go-sdk/oss"
        "os"
    )
    func main(){
        // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
        // STSから取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 
        // STSから取得したセキュリティトークンを指定します。 
        client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret", "yourAccessKeySecret", oss.SecurityToken("yourSecurityToken"))
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    } 

RAMロールの設定

  1. 次のコマンドを実行して、alibabacloud_credentialsをインストールします。

    pip install alibabacloud_資格情報
  2. RAM ユーザーの AccessKey ペアを取得します。

    詳細については、「RAMユーザーのAccessKeyペアの作成」をご参照ください。

    重要

    RAMユーザーのAccessKeyペアが漏洩するリスクを減らすために、3か月以上使用されているAccessKeyペアをローテーションすることを推奨します。 長期間使用されていないRAMユーザーのAccessKeyペアを無効にして削除することを推奨します。

  3. 移行先RAMロールのRamRoleArnを取得します。

    説明

    RamRoleArnは、RAMロールのAlibaba Cloud Resource Name (ARN) で、想定されるRAMロールのIDです。 形式: acs:ram ::$ accountID:role/$roleName。 $accountID: Alibaba CloudアカウントのID。 $roleName: RAMロールの名前。

    詳細については、「RAMロールに関する情報の表示」をご参照ください。

  4. RAMユーザーのAccessKeyペアとRAMロールのRamRoleArnを一時的なアクセス資格情報として設定します。

    環境変数

    1. 取得したRAMユーザーのAccessKeyペアとRAMロールのRamRoleArnを使用して環境変数を設定します。

      macOS

      1. ターミナルを開きます。

      2. 以下のコマンドを実行します。

        nano ~/.bash_profile
      3. RAMユーザーのAccessKeyペアとRAMロールのRamRoleArnをファイルの最後に追加します。

        エクスポートOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D ****
        エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn ****
        export OSS_STS_ROLE_ARN=acs:ram::17464958 ********:role/ossststest 
      4. Ctrl + Xを押し、Yを押してファイルを保存し、Enterを押してファイルを閉じます。

      5. 変更を有効にするには、次のコマンドを実行します。

        source /etc/profile
      6. 次のコマンドを実行して、環境変数の設定を確認します。

        エコー $OSS_ACCESS_KEYID
        エコー $OSS_ACCESS_KEY_SECRET
        エコー $OSS_STS_ROLE_ARN 

        サンプル成功応答:

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

      Linux

      1. ターミナルを開きます。

      2. 以下のコマンドを実行します。

        sudo vim /etc/profile
      3. RAMユーザーのAccessKeyペアとRAMロールのRamRoleArnをファイルの最後に追加します。

        エクスポートOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D ****
        エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn ****
        export OSS_STS_ROLE_ARN=acs:ram::17464958 ********:role/ossststest 
      4. [Esc] を押して編集モードを終了します。 次に、:wqと入力し、enterを押してファイルを保存して閉じます。

      5. 変更を有効にするには、次のコマンドを実行します。

        source /etc/profile
      6. 次のコマンドを実行して、環境変数の設定を確認します。

        エコー $OSS_ACCESS_KEYID
        エコー $OSS_ACCESS_KEY_SECRET
        エコー $OSS_STS_ROLE_ARN 

        サンプル成功応答:

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

      Windows

      1. CLIを開きます。

      2. 次のコマンドを実行して、RAMユーザーのAccessKeyペアとRAMロールのRamRoleArnを設定します。

        セットOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D ****
        セットOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn ****
        セット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. 次のコマンドを実行して、環境変数の設定を確認します。

        エコー % OSS_ACCESS_KEY_ID %
        エコー % OSS_ACCESS_KEY_SECRET %
        エコー % OSS_STS_ROLE_ARN % 

        サンプル成功応答:

        LTAI4GDty8ab9W4Y1D ****
        IrVTNZNy5yQelTETg0cZML3TQn ****
        acs:ram::17464958 *********: role/ossststest 
    2. 環境変数からRAMユーザーのAccessKeyとRAMロールのRamRoleArnのペアを取得します。

      パッケージメイン
      
      import (import (import)
          "fmt"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          「github.com/aliyun/credentials-go/credentials」
          "os"
      )
      type Credentials struct {
          AccessKeyId文字列
          AccessKeySecret文字列
          SecurityToken文字列
      }
      
      型defaultCredentialsProvider struct {
          Credential。Credential
      }
      
      func (資格情報 * 資格情報) GetAccessKeyID() string {
          認証情報を返します。AccessKeyId
      }
      
      func (資格情報 * 資格情報) GetAccessKeySecret() string {
          認証情報を返します。AccessKeySecret
      }
      
      func (資格情報 * 資格情報) GetSecurityToken() string {
          証明書を返します。SecurityToken
      }
      
      func (defBuild * defaultCredentialsProvider) GetCredentials() oss.Credentials {
          id,_ := defBuild.cred.GetAccessKeyId()
          secret,_ := defBuild.cred.GetAccessKeySecret()
          token,_ := defBuild.cred.GetSecurityToken()
      
          return &Credentials {
              AccessKeyId: * id、
              AccessKeySecret: * secret、
              SecurityToken: * token、
          }
      }
      
      func NewCredentialsProvider(credential credentials.Credential) defaultCredentialsProvider {
          defaultCredentialsProviderを返します {
              cred: 資格情報、
          }
      }
      
      func main(){
          config := new(credentials.Config) 。
              // 一時的なアクセス資格情報のタイプをram_role_arnに設定します。 
              SetType("ram_role_arn") 。
              // 環境変数からRAMユーザーのAccessKey IDとAccessKey secretを取得します。 
              SetAccessKeyId(os.Getenv("OSS_ACCESS_KEY_ID")) 。        
              SetAccessKeySecret(os.Getenv("OSS_ACCESS_KEY_SECRET")) 。
      		// 環境変数からRAMロールのARNを取得します。 RAMロールのARNは、想定されるロールのIDです。 形式: acs:ram ::$ accountID:role/$roleName。 
              SetRoleArn(os.Getenv("OSS_STS_ROLE_ARN")) 。
              // さまざまなトークンを区別するためにロールセッション名を指定します。 
              SetRoleSessionName("Role_Session_Name") 。
              // (オプション) STSトークンの権限を指定します。 
              SetPolicy("") 。
              // (オプション) STSトークンの有効期間を指定します。 
              SetRoleSessionExpiration(3600)
      
      
          arnCredential, err := credentials.NewCredential(config)
          if err! =nil {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }
      
          プロバイダー:= NewCredentialsProvider(arnCredential)
          client, err := oss.New("oss-cn-hangzhou.aliyuncs.com", ", ", ", oss.SetCredentialsProvider(&provider))
          if err! =nil {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }
      }

    コードにアクセス資格情報を埋め込む

    警告

    コードにアクセス資格情報を埋め込むと、セキュリティの問題が発生する可能性があります。 アクセス資格情報が漏洩した場合、攻撃者はアクセス資格情報を使用してOSSリソースにアクセスできます。これにより、データが失われる可能性があります。 セキュリティを確保するために、環境変数からアクセス資格情報を取得するなど、より安全な方法を使用することを推奨します。

    パッケージメイン
    
    import (import (import)
        "fmt"
        "github.com/aliyun/aliyun-oss-go-sdk/oss"
        「github.com/aliyun/credentials-go/credentials」
        "os"
    )
    type Credentials struct {
        AccessKeyId文字列
        AccessKeySecret文字列
        SecurityToken文字列
    }
    
    型defaultCredentialsProvider struct {
        Credential。Credential
    }
    
    func (資格情報 * 資格情報) GetAccessKeyID() string {
        認証情報を返します。AccessKeyId
    }
    
    func (資格情報 * 資格情報) GetAccessKeySecret() string {
        認証情報を返します。AccessKeySecret
    }
    
    func (資格情報 * 資格情報) GetSecurityToken() string {
        証明書を返します。SecurityToken
    }
    
    func (defBuild * defaultCredentialsProvider) GetCredentials() oss.Credentials {
        id,_ := defBuild.cred.GetAccessKeyId()
        secret,_ := defBuild.cred.GetAccessKeySecret()
        token,_ := defBuild.cred.GetSecurityToken()
    
        return &Credentials {
            AccessKeyId: * id、
            AccessKeySecret: * secret、
            SecurityToken: * token、
        }
    }
    
    func NewCredentialsProvider(credential credentials.Credential) defaultCredentialsProvider {
        defaultCredentialsProviderを返します {
            cred: 資格情報、
        }
    }
    
    func main(){
        config := new(credentials.Config) 。
            // 一時的なアクセス資格情報のタイプをram_role_arnに設定します。 
            SetType("ram_role_arn") 。
            // RAMユーザーのAccessKeyペアを指定します。 
            SetAccessKeyId("AccessKeyId") 。        
            SetAccessKeySecret("AccessKeySecret") 。
            // RAMロールのARNを指定します。これは、想定するRAMロールのIDです。 形式: acs:ram ::$ accountID:role/$roleName。 
            SetRoleArn("acs:ram::15069 ************: role/ram-oss-test") 。
            // さまざまなトークンを区別するためにロールセッション名を指定します。 
            SetRoleSessionName("Role_Session_Name") 。
            // (オプション) STSトークンの権限を指定します。 
            SetPolicy("") 。
            // (オプション) STSトークンの有効期間を指定します。 
            SetRoleSessionExpiration(3600)
    
    
        arnCredential, err := credentials.NewCredential(config)
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    
        プロバイダー:= NewCredentialsProvider(arnCredential)
        client, err := oss.New("oss-cn-hangzhou.aliyuncs.com", ", ", ", oss.SetCredentialsProvider(&provider))
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    }

ECS インスタンスの RAM ロールを設定

  1. 次のコマンドを実行して、alibabacloud_credentialsをインストールします。

    go ge t github.com/aliyun/credentials-go/credentials
  2. RAMロールをECSインスタンスにアタッチします。

    詳細については、「ECSインスタンスへのインスタンスRAMロールのアタッチ」をご参照ください。

  3. ECSインスタンスのRAMロールを使用して、一時的なアクセス資格情報を設定します。

    パッケージメイン
    
    import (import (import)
        "fmt"
        "github.com/aliyun/aliyun-oss-go-sdk/oss"
        「github.com/aliyun/credentials-go/credentials」
        "os"
    )
    type Credentials struct {
        AccessKeyId文字列
        AccessKeySecret文字列
        SecurityToken文字列
    }
    
    タイプCredentialsProvider struct {
        Credential。Credential
    }
    
    func (資格情報 * 資格情報) GetAccessKeyID() string {
        認証情報を返します。AccessKeyId
    }
    
    func (資格情報 * 資格情報) GetAccessKeySecret() string {
        認証情報を返します。AccessKeySecret
    }
    
    func (資格情報 * 資格情報) GetSecurityToken() string {
        証明書を返します。SecurityToken
    }
    
    func (defBuild CredentialsProvider) GetCredentials() oss.Credentials {
        id,_ := defBuild.cred.GetAccessKeyId()
        secret,_ := defBuild.cred.GetAccessKeySecret()
        token,_ := defBuild.cred.GetSecurityToken()
    
        return &Credentials {
            AccessKeyId: * id、
            AccessKeySecret: * secret、
            SecurityToken: * token、
        }
    }
    
    func NewStaticCredentialsProvider(credential credentials.Credential) CredentialsProvider {
        return CredentialsProvider {
            cred: 資格情報、
        }
    }
    
    func main(){
        config := new(credentials.Config) 。
            // 一時的なアクセス資格情報のタイプをecs_ram_roleに設定します。 
            SetType("ecs_ram_role") 。
            // (オプション) ロール名を指定します。 ロール名を指定しない場合、OSSは自動的にロール名を生成します。 リクエスト数を減らすために、ロール名を指定することを推奨します。 
            SetRoleName("RoleName")
    
        ecsCredential, err := credentials.NewCredential(config)
        if err! =nil {
            リターン
        }
        プロバイダー:= NewStaticCredentialsProvider(ecsCredential)
        client, err := oss.New("oss-cn-hangzhou.aliyuncs.com", ", ", ", oss.SetCredentialsProvider(&provider))
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
        fmt.Printf("client :%# v\n", client)
    
    } 

長期アクセス資格情報の使用

OSS SDK for Goを使用してアプリケーションまたはサービスのOSSリソースに長期間アクセスする場合は、次の手順を実行して長期アクセス資格情報を設定できます。

OSSリソースに長期間アクセスする場合は、RAMユーザーのAccessKeyペアを使用してOSSリソースにアクセスできます。

RAMユーザーのAccessKeyペアの設定

  1. RAM ユーザーの AccessKey ペアを取得します。

    詳細については、「RAMユーザーのAccessKeyペアの作成」をご参照ください。

    重要

    3か月以上使用されているRAMユーザーのAccessKeyペアをローテーションすることを推奨します。 長期間使用されていないRAMユーザーのAccessKeyペアを無効にして削除することを推奨します。 これにより、AccessKeyペアがリークするリスクが軽減されます。

  2. RAMユーザーのAccessKeyペアを設定します。

    環境変数

    1. 環境変数を設定します。

      macOS

      1. ターミナルを開きます。

      2. 以下のコマンドを実行します。

        nano ~/.bash_profile
      3. RAMユーザーのAccessKeyペアをファイルの最後に追加します。

        エクスポートOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D ****
        エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn **** 
      4. Ctrl + Xを押し、Yを押してファイルを保存し、Enterを押してファイルを閉じます。

      5. 変更を有効にするには、次のコマンドを実行します。

        source ~/.bash_profile
      6. 次のコマンドを実行して、環境変数の設定を確認します。

        エコー $OSS_ACCESS_KEYID
        エコー $OSS_ACCESS_KEY_SECRET 

        サンプル成功応答:

        LTAI4GDty8ab9W4Y1D ****
        IrVTNZNy5yQelTETg0cZML3TQn **** 

      Linux

      1. ターミナルを開きます。

      2. 以下のコマンドを実行します。

        sudo vim /etc/profile
      3. RAMユーザーのAccessKeyペアをファイルの最後に追加します。

        エクスポートOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D ****
        エクスポートOSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn **** 
      4. [Esc] を押して編集モードを終了します。 次に、:wqと入力し、enterを押してファイルを保存して閉じます。

      5. 変更を有効にするには、次のコマンドを実行します。

        source /etc/profile
      6. 次のコマンドを実行して、環境変数の設定を確認します。

        エコー $OSS_ACCESS_KEYID
        エコー $OSS_ACCESS_KEY_SECRET 

        サンプル成功応答:

        LTAI4GDty8ab9W4Y1D ****
        IrVTNZNy5yQelTETg0cZML3TQn **** 

      Windows

      1. CLIを開きます。

      2. 次のコマンドを実行して、RAMユーザーのAccessKeyペアを設定します。

        セットOSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D ****
        set OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn **** 
      3. 変更を有効にするには、次のコマンドを実行します。

        setx OSS_ACCESS_KEY_ID "% OSS_ACCESS_KEY_ID %"
        setx OSS_ACCESS_KEY_SECRET "% OSS_ACCESS_KEY_SECRET %" 
      4. 次のコマンドを実行して、環境変数の設定を確認します。

        エコー % OSS_ACCESS_KEY_ID %
        エコー % OSS_ACCESS_KEY_SECRET % 

        サンプル成功応答:

        LTAI4GDty8ab9W4Y1D ****
        IrVTNZNy5yQelTETg0cZML3TQn **** 
    2. 環境変数からRAMユーザーのAccessKeyペアを取得します。

      パッケージメイン
      
      import (import (import)
      "fmt"
      「github.com/aliyun/aliyun-oss-go-sdk/oss」
      "os"
      )
      
      func main() {
      // 環境変数から取得したRAMユーザーのAccessKeyペアを使用して、アクセス資格情報を設定します。 
      	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
      if err! =nil {
      fmt.Println("Error:", err)
      os.Exit(-1)
      }
      
      // OSSClientインスタンスを作成します。 
      	// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
      	client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
      if err! =nil {
      fmt.Println("Error:", err)
      os.Exit(-1)
      }
      } 

    コードにアクセス資格情報を埋め込む

    警告

    コードにアクセス資格情報を埋め込むと、セキュリティの問題が発生する可能性があります。 アクセス資格情報が漏洩した場合、攻撃者はアクセス資格情報を使用してOSSリソースにアクセスできます。これにより、データが失われる可能性があります。 セキュリティを確保するために、環境変数からアクセス資格情報を取得するなど、より安全な方法を使用することを推奨します。

    パッケージメイン
    
    import (import (import)
    "fmt"
    「github.com/aliyun/aliyun-oss-go-sdk/oss」
    "os"
    )
    
    func main() {
        // Create an OSSClient instance. 
        // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
        // yourAccessKeyIdをRAMユーザーのAccessKey IDに設定し、yourAccessKeySecretをRAMユーザーのAccessKey secretに設定します。 
        client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret")
        if err! =nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        }
    }

次に何をすべきか

アクセス資格情報を設定した後、OSSClientインスタンスを初期化する必要があります。 詳細については、「初期化」をご参照ください。