edit-icon download-icon

アクセスの許可

最終更新日: Nov 02, 2017

署名 URL の生成

署名付きの URL を生成することによって、ユーザーに一時的なアクセス URL を提供できます。URL の生成中に、URL の有効期限を指定して、ユーザーのアクセス時間を制限することができます。

署名 URL の生成

コードは下記となります。

  1. var req = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Get)
  2. {
  3. Expiration = DateTime.Now.AddHours(1)
  4. };
  5. var uri = client.GeneratePresignedUri(req);

デフォルトでは、生成された URL は GET アクセスをサポートしており、ユーザーはブラウザを使用してコンテンツに直接アクセスできます。

他の HTTP メソッド URL の生成

ユーザーが他の一時的な操作(オブジェクトのアップロードや削除など)を実行できるようにするには、別のメソッドの URL に署名する必要があります。次のコードは、PUT メソッドの URL に署名します。

  1. // PUT メソッドの URL に署名
  2. var req = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Put)
  3. {
  4. Expiration = DateTime.Now.AddHours(1),
  5. ContentType = "text/html"
  6. };
  7. var uri = client.GeneratePresignedUri(req);

署名 URL を使用してリクエストを送信

現在、.NET SDK は PutObject メソッドと GetObject メソッドの署名 URL をサポートしています。

PutObject の URL に署名

  1. var generatePresignedUriRequest = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Put);
  2. var signedUrl = client.GeneratePresignedUri(generatePresignedUriRequest);
  3. var result = client.PutObject(signedUrl, fileToUpload);

STS 一時許可の使用

紹介

OSS は、Alibaba Cloud STS サービスを使用してアクセスの許可を一時的に付与することができます。Alibaba Cloud STS(Security Token Service)は、ユーザーに一時的なアクセストークンを提供する Web サービスです。

STS を使用すると、サードパーティのアプリケーションまたは連合ユーザー(ユーザーIDを管理できます)に、カスタム有効期間とアクセス権を持つアクセス資格情報を割り当てることができます。

サードパーティのアプリケーションまたは連合ユーザーは、これらのアクセス資格情報を使用して Alibaba Cloud 製品 API を直接呼び出したり、Alibaba Cloud 製品が提供する SDK を使用してクラウド製品 API にアクセスすることができます。

  • 長期キー(AccessKey)をサードパーティアプリケーションに公開する必要はありません。アクセストークンを生成して、アクセストークンをサードパーティのアプリケーションに送信する必要があります。このトークンのアクセス許可と妥当性をカスタマイズできます。

  • アクセストークンが期限切れになると自動的に無効になります。

プロセスは次のとおりです。

このソリューションの詳細は次のとおりです。

  1. アプリケーションユーザーとしてログオンします。アプリユーザー ID は、顧客が管理します。顧客は、ID 管理システムをカスタマイズしたり、外部 Web アカウントまたは OpenID を使用することができます。各有効なアプリユーザーに対して、AppServer は最小アクセス許可を正確に定義することができます。

  2. AppServer は STS にセキュリティトークン(SecurityToken)を要求します。STS を呼び出す前に、AppServer は、アプリユーザーの最小アクセス許可(ポリシー構文で説明)と承認の有効期限を判断する必要があります。次に、STSの AssumeRole インターフェイスを呼び出すことによって、セキュリティトークンを取得できます。役割の管理と使用の詳細については、RAM ユーザーガイドの ロール を参照してください。

  3. STS は、有効なアクセス情報を AppServer に返します。アクセス情報には、セキュリティトークン、一時的なアクセスキーのペア(AccessKeyId と AccessKeySecret)、および有効期限が含まれます。

  4. AppServer はアクセス情報を ClientApp に返します。ClientApp はこのアクセス情報をキャッシュできます。アクセス情報が無効になると、ClientApp は AppServer から新しい有効なアクセス情報をリクエストする必要があります。 たとえば、アクセス情報が 1 時間有効であれば、ClientApp は 30 分ごとにアクセス情報を更新するように AppServer にリクエストできます。

  5. ClientApp はローカルにキャッシュされたアクセス情報を使用して Alibaba Cloud Service API をリクエストします。クラウドサービスは STS を使用して認証情報を検証し、ユーザーリクエストに正しく応答します。

STS セキュリティトークンの詳細については、RAM ユーザーガイドの ロール を参照してください。キーは、STS インターフェース AssumeRole を呼び出して有効なアクセス情報を取得することです。このメソッドは、STS SDK を使用して呼び出すこともできます。詳細はここをクリックしてください

STS 資格情報を使用して署名要求の作成

STS の一時アクセス情報を取得した後、ユーザのクライアントは、セキュリティトークン(SecurityToken)と一時アクセスキー(AccessKeyId、AccessKeySecret)を使用して OSSClient を生成できます。オブジェクトのアップロードの例は次の通りです。

  1. string accessKeyId = "<accessKeyId>";
  2. string accessKeySecret = "<accessKeySecret>";
  3. string securityToken = "<securityToken>"
  4. // Take Hangzhou as an example
  5. string endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  6. var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret, securityToken);