(resource:*)
またはすべてのアクション(action:*)
の権限を直接与えてしまうと、権限が大きすぎるためにデータセキュリティ上のリスクが生じます。言語タイプ | コードインストールアドレス | サンプルコードアドレス |
Java | ||
.NET | ||
Go | ||
NodeJS | ||
PHP | ||
Python |
// githubが提供するmaven統合メソッドによってjava sts sdkをインポートします。3.1.0以上のバージョンを使用しますpublic class Demo {public static void main(String[] args) {TreeMap<String, Object> config = new TreeMap<String, Object>();try {//ここでのSecretIdとSecretKeyは一時キーの申請に用いる永続的なID(ルートアカウント、サブアカウントなど)を表します。サブアカウントにはバケットの操作権限が必要です。String secretId = System.getenv("secretId");//ユーザーのSecretIdです。サブアカウントのキーを使用し、権限承認は最小権限ガイドに従って行い、使用上のリスクを低減させることをお勧めします。サブアカウントキーの取得については、https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1をご参照くださいString secretKey = System.getenv("secretKey");//ユーザーのSecretKeyです。サブアカウントのキーを使用し、権限承認は最小権限ガイドに従って行い、使用上のリスクを低減させることをお勧めします。サブアカウントキーの取得については、https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1をご参照ください// ご自身のCloud APIキーのSecretIdに置き換えますconfig.put("secretId", secretId);// ご自身のCloud APIキーのSecretKeyに置き換えますconfig.put("secretKey", secretKey);// ドメイン名を設定します:// Tencent Cloud CVMを使用している場合は、内部ドメイン名を設定できます//config.put("host", "sts.internal.tencentcloudapi.com");// 一時キーの有効期間の単位は秒であり、デフォルトでは1800秒です。現在はルートアカウントが最長2時間(7200秒)、サブアカウントが最長36時間(129600秒)までですconfig.put("durationSeconds", 1800);// ご自身のbucketに置き換えますconfig.put("bucket", "examplebucket-1250000000");// bucketの所在リージョンに置き換えますconfig.put("region", "ap-guangzhou");// ここを許可するパスのプレフィックスに変更します。ご自身のウェブサイトのユーザーログインセッションによって、アップロードを許可する具体的なパスを判断することができます// いくつかの典型的なプレフィックスによる権限承認のケースを挙げます。// 1、すべてのオブジェクトへのアクセスを許可する:"*"// 2、指定のオブジェクトへのアクセスを許可する:"a/a1.txt", "b/b1.txt"// 3、指定のプレフィックスを持つオブジェクトへのアクセスを許可する:"a*", "a/*", "b/*"// 「*」を入力すると、ユーザーにすべてのリソースへのアクセスを許可することになります。業務上の必要がない限り、最小権限の原則に従って、対応する範囲のアクセス権限をユーザーに与えてください。config.put("allowPrefixes", new String[] {"exampleobject","exampleobject2"});// キーの権限リストです。ここで今回の一時キーに必要な権限を指定する必要があります。// シンプルアップロード、フォームアップロード、マルチパートアップロードには次の権限が必要です。その他の権限リストについてはhttps://www.tencentcloud.com/document/product/436/30580をご参照くださいString[] allowActions = new String[] {// シンプルアップロード"name/cos:PutObject",// フォームアップロード、ミニプログラムアップロード"name/cos:PostObject",// マルチパートアップロード"name/cos:InitiateMultipartUpload","name/cos:ListMultipartUploads","name/cos:ListParts","name/cos:UploadPart","name/cos:CompleteMultipartUpload"};config.put("allowActions", allowActions);/*** conditionの設定(必要な場合)//# 一時キーの発効条件、conditionに関する詳細な設定ルールおよびCOSがサポートするconditionのタイプについては https://www.tencentcloud.com/document/product/436/71307?from_cn_redirect=1をご参照くださいfinal String raw_policy = "{\\n" +" \\"version\\":\\"2.0\\",\\n" +" \\"statement\\":[\\n" +" {\\n" +" \\"effect\\":\\"allow\\",\\n" +" \\"action\\":[\\n" +" \\"name/cos:PutObject\\",\\n" +" \\"name/cos:PostObject\\",\\n" +" \\"name/cos:InitiateMultipartUpload\\",\\n" +" \\"name/cos:ListMultipartUploads\\",\\n" +" \\"name/cos:ListParts\\",\\n" +" \\"name/cos:UploadPart\\",\\n" +" \\"name/cos:CompleteMultipartUpload\\"\\n" +" ],\\n" +" \\"resource\\":[\\n" +" \\"qcs::cos:ap-shanghai:uid/1250000000:examplebucket-1250000000/*\\"\\n" +" ],\\n" +" \\"condition\\": {\\n" +" \\"ip_equal\\": {\\n" +" \\"qcs:ip\\": [\\n" +" \\"192.168.1.0/24\\",\\n" +" \\"101.226.100.185\\",\\n" +" \\"101.226.100.186\\"\\n" +" ]\\n" +" }\\n" +" }\\n" +" }\\n" +" ]\\n" +"}";config.put("policy", raw_policy);*/Response response = CosStsClient.getCredential(config);System.out.println(response.credentials.tmpSecretId);System.out.println(response.credentials.tmpSecretKey);System.out.println(response.credentials.sessionToken);} catch (Exception e) {e.printStackTrace();throw new IllegalArgumentException("no valid secret !");}}}
// githubが提供するmaven統合メソッドによってcos xml java sdkをインポートしますimport com.qcloud.cos.*;import com.qcloud.cos.auth.*;import com.qcloud.cos.exception.*;import com.qcloud.cos.model.*;import com.qcloud.cos.region.*;public class Demo {public static void main(String[] args) throws Exception {// ユーザー基本情報String tmpSecretId = "COS_SECRETID"; // STSインターフェースから返された一時SecretIdに置き換えてくださいString tmpSecretKey = "COS_SECRETKEY"; // STSインターフェースから返された一時SecretKeyに置き換えてくださいString sessionToken = "Token"; // STSインターフェースから返された一時Tokenに置き換えてください// 1 ユーザーID情報(secretId, secretKey)を初期化しますCOSCredentials cred = new BasicCOSCredentials(tmpSecretId, tmpSecretKey);// 2 bucketのリージョンを設定します。詳細についてはCOSリージョン https://www.tencentcloud.com/document/product/436/6224?from_cn_redirect=1をご参照くださいClientConfig clientConfig = new ClientConfig(new Region("ap-guangzhou"));// 3 cosクライアントを生成します。COSClient cosclient = new COSClient(cred, clientConfig);// bucket名にはappidを含める必要がありますString bucketName = "examplebucket-1250000000";String key = "exampleobject";// objectをアップロードします。20M以下のファイルにはこのインターフェースの使用をお勧めしますFile localFile = new File("src/test/resources/text.txt");PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);// x-cos-security-token headerフィールドを設定しますObjectMetadata objectMetadata = new ObjectMetadata();objectMetadata.setSecurityToken(sessionToken);putObjectRequest.setMetadata(objectMetadata);try {PutObjectResult putObjectResult = cosclient.putObject(putObjectRequest);// 成功:putobjectResultはファイルのetagを返しますString etag = putObjectResult.getETag();} catch (CosServiceException e) {//失敗、CosServiceExceptionをスローしますe.printStackTrace();} catch (CosClientException e) {//失敗、CosClientExceptionをスローしますe.printStackTrace();}// クライアントを閉じるcosclient.shutdown();}}
この記事はお役に立ちましたか?