Security Token Service (STS) を使用して、一時的なアクセス許可を付与し、RAMユーザーパスワードの漏洩によるセキュリティリスクを防ぐことができます。 このトピックでは、RAMユーザーとRAMロールを作成する方法、およびSTSを使用して一時的なアクセス許可を付与する方法について説明します。
始める前に
このタスクについて
RAM ユーザーの作成
RAM ロールの作成
STSを使用したアクセス許可
対応するプログラミング言語のSTS SDKをダウンロードしてインストールするか、ロールの引き受け(AssumeRole)操作を呼び出す必要があります。 次の例は、Javaのロールとポリシーの設定を示しています。
API操作の呼び出し方法については、「概要」をご参照ください。
- Javaのサンプルコード
RAMユーザーとRAMロールの作成後、STSを使用してアクセス許可を付与できます。
次の例では、RAMユーザーにアクセス権限を付与する方法について説明します。 この例には、パラメーターの説明と関連するサンプルコードが含まれています。
- RoleArn: 引き受けられるロールのID。 RoleArnの値を取得するには、RAMコンソールの [ロール] ページに移動します。 RAMロールの名前をクリックし、[基本情報] セクションでARNの値を確認します。
- RoleSessionName: ロールのセッション名。 ビジネス要件に基づいて、このパラメーターの値をカスタマイズします。 ほとんどの場合、RoleSessionNameは、RAMユーザーのユーザー名など、操作を呼び出すユーザーのIDに設定されます。 ActionTrailログでは、RoleSessionNameを使用して、同じRAMロールを引き受けて操作を実行するユーザーを区別できます。 これにより、RAMユーザーに基づいてアクセス要求を監査できます。 RoleSessionNameの値は2 ~ 64文字で、英数字、ピリオド (.) 、アットサイン (@) 、ハイフン (-) 、アンダースコア (_) を使用できます。
- ポリシー: ユーザーがロールを引き受けるときに追加される権限制限。
注
- Policyパラメーターは、ユーザーがロールを引き受けた後、一時的なアクセス資格情報の権限を制限するために渡されます。 一時的なアクセス資格情報によって取得される最終的な権限は、ロールの権限とPolicyパラメーターで指定された権限の共通部分です。
- Policyパラメーターは、柔軟性を向上させるために渡されます。 たとえば、このパラメーターを設定して、CreateUploadVideo操作のみを呼び出すことができます。
- DurationSeconds: 一時的なアクセス資格情報の有効期間。 (単位:秒) 有効値:900 〜 3600。
- AccessKeyIdとAccessKeySecret: ロールとそのAccessKeyペアを引き受けるRAMユーザー。
パッケージポップ; com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.http.MethodTypeをインポートします。com.aliyuncs.profile.DefaultProfileをインポートします。com.aliyuncs.profile.IClientProfileをインポートします。com.aliyuncs.sts.mo del.v20150401.AssumeRoleRequestをインポートします。com.aliyuncs.sts.mo del.v20150401.AssumeRoleResponseをインポートします。com.aliyuncs.vod.mo del.v20170321.CreateUploadVideoRequestをインポートします。com.aliyuncs.vod.mo del.v20170321.CreateUploadVideoResponseをインポートします。/** * @ 著者ジャック * @ date 2018/5/25 * / パブリッククラスTestStsService { public static void main(String[] args) { // AssumeRole操作を呼び出すことができるのはRAMユーザーのみです。 // Alibaba CloudアカウントのAccessKeyペアを使用してAssumeRoleリクエストを開始することはできません。 // RAMコンソールでRAMユーザーを作成し、そのユーザーのAccessKeyペアを作成します。 String accessKeyId = "<access-key-id>"; String accessKeySecret = "<access-key-secret>"; // AssumeRole操作のリクエストパラメーターには、RoleArn、RoleSessionName、Policy、およびDurationSecondsが含まれます。 // RAMコンソールでRoleArnの値を取得する必要があります。 String roleArn = "<role-arn>"; // RoleSessionName: ロールのセッション名。 You can customize this parameter. String roleSessionName = "session-name";// セッション名を指定します。 // ポリシーを指定します。 String policy = "{\n" + " \" バージョン \": \" 1\",\n" + " \" ステートメント \": [\n" + " {\n" + " \" アクション \": \" vod:*\",\n" + " \" リソース \": \" *\",\n" + " \" 効果 \": \" 許可 \"\n" + " }\n" + " ]\n" + "}"; try { AssumeRoleResponseレスポンス=assumeRole(accessKeyId、accessKeySecret、roleArn、roleSessionName、ポリシー); System.out.println("Expiration: " + response.getCredentials().getExpiration()); System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId()); System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret()); System.out.println("Security Token: " + response.getCredentials().getSecurityToken()); System.out.println("RequestId: " + response.getRequestId()); createUploadVideo(response.getCredentials().getAccessKeyId() 、response.getCredentials().getAccessKeySecret() 、response.getCredentials().getSecurityToken()); } catch (ClientException e) { System.out.println("Failed to get a token."); System.out.println("Error code: " + e.getErrCode()); System.out.println("Error message: " + e.getErrMsg()); } } 静的AssumeRoleResponse assumeRole(String accessKeyId、String accessKeySecret、String roleArn、String roleSessionName、Stringポリシー) はClientException { try { // デフォルトのプロファイルを作成します。 regionIdパラメーターは空のままにします。 /* 注: SysEndpoint t o sts.aliyuncs.comを設定した場合、regionIdはオプションです。 それ以外の場合は、使用中のサービスリージョンにregionIdを設定する必要があります。 例: cn-shanghai. 異なるリージョンのSTSエンドポイントのリストについては、「サービスリージョン」をご参照ください。 */ IClientProfile profile = DefaultProfile.getProfile("", accessKeyId, accessKeySecret); // プロファイルを使用してクライアントを構築します。 DefaultAcsClient client = new DefaultAcsClient(profile); // AssumeRoleリクエストを作成し、リクエストパラメーターを設定します。 final AssumeRoleRequest request = new AssumeRoleRequest(); request.setSysEndpoint("sts.aliyuncs.com"); request.setSysMethod(MethodType.POST); request.setRoleArn(roleArn); request.setRoleSessionName(roleSessionName); request.setPolicy(policy); // リクエストを開始し、レスポンスを取得します。 final AssumeRoleResponse response = client.getAcsResponse(request); return response; } catch (ClientException e) { throw e; } } static void createUploadVideo(String accessKeyId, String accessKeySecret, String token) { // ApsaraVideo VODのリージョンを指定します。 たとえば、サービスリージョンが上海の場合、regionIdをcn-Shanghaiに設定します。 String regionId = "cn-shanghai"; IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret); DefaultAcsClient client = new DefaultAcsClient(profile); CreateUploadVideoRequest request = new CreateUploadVideoRequest(); request.setSecurityToken (トークン); request.setTitle("t5"); request.setFileName("D :\\ TestVideo\\t4.mp4"); request.setFileSize(10240L); try { CreateUploadVideoResponseレスポンス=client.getAcsResponse (リクエスト); System.out.println("CreateUploadVideoRequest" + request.getUrl()); System.out.println("CreateUploadVideoRequest, requestId:" + response.getRequestId()); System.out.println("UploadAddress", + response.getUploadAddress()); System.out.println("UploadAuth", + response.getUploadAuth()); System.out.println("VideoId", + response.getVideoId()); } catch (ClientException e) { System.out.println("action, error:" + e); e.printStackTrace(); } } }
- SDK のダウンロード
- インストール
- SDK のダウンロード
- インストール
リクエストが開始された後、レスポンスが返されます。 詳細については、「戻り値の処理」をご参照ください。