使用Java SDK發起OSS請求,您需要配置訪問憑證。阿里雲服務會通過訪問憑證驗證您的身份資訊和存取權限。您可以根據使用情境對認證和授權的要求,選擇不同類型的訪問憑證。本文介紹如何配置臨時訪問憑證、長期訪問憑證和OIDC訪問憑證。
前提條件
在配置訪問憑證前,您需要安裝OSS Java SDK。詳情請參見安裝。
訪問憑證
您可以選擇以下類型的訪問憑證。
臨時訪問憑證:對於需要高安全性的情境,例如臨時授權應用訪問OSS,建議使用臨時訪問憑證。臨時訪問憑證可以限制訪問的有效期間,從而減少訪問憑證泄露的風險。此外,臨時訪問憑證支援許可權控制,可以有效地避免許可權過大的問題。更多資訊,請參見使用臨時訪問憑證。
長期訪問憑證:出於安全性考慮,不建議您使用長期訪問憑證,建議您使用臨時訪問憑證。對於需要便利性的情境,長期訪問憑證可以在較長時間內免除多次重新整理的麻煩。建議每三個月更換一次長期訪問憑證,以提高帳號的安全性。當長期訪問憑證泄露或者不再使用時,應該及時刪除或者禁用相關的訪問憑證,以免造成安全風險。更多資訊,請參見使用長期訪問憑證。
OIDC訪問憑證:如果容器叢集上部署的是不可信的應用,您可能並不希望它們能通過中繼資料服務擷取Worker節點關聯執行個體RAM角色的STS Token,這時,您可以選擇使用OIDC訪問憑證。OIDC(OpenID Connect)是建立在OAuth 2.0基礎上的一個認證協議,它可以在避免影響雲上資源安全的同時又能讓不可信的應用安全地擷取所需的 STS Token,實現應用層級的許可權最小化。阿里雲RAM支援基於OIDC的角色SSO。更多資訊,請參見OIDC訪問憑證。
注意事項
本文介紹了如何在不同作業系統(例如macOS、Linux、Windows)中使用Shell命令配置環境變數。正確設定環境變數可確保命令列啟動的程式能正確識別必要的配置。如果您是在IDE中,可能需要參考本文在IDE中單獨設定環境變數,以便程式在該環境下正確運行。
使用臨時訪問憑證
當您準備臨時使用Java SDK訪問OSS服務時,您可以選擇以下方式配置臨時訪問憑證。
配置STS臨時訪問憑證:如果您需要在規定時間內訪問您的OSS,您可以通過STS服務頒發一個STS臨時訪問憑證。臨時訪問憑證無需透露您的RAM使用者存取金鑰,使您的OSS訪問更加安全。
配置RAM角色:如果您需要授權訪問或跨帳號訪問OSS,您可以通過RAM使用者扮演對應的RAM角色的方式授權訪問或跨帳號訪問OSS。
配置ECS的RAM角色:如果你需要在阿里雲的Elastic Compute Service中訪問您的OSS,您可以通過ECS執行個體RAM角色的方式訪問OSS。執行個體RAM角色允許您將一個角色關聯到雲端服務器執行個體,在執行個體內部基於STS臨時憑證通過指定方法訪問OSS。STS臨時憑證由系統自動產生和更新,應用程式可以使用指定的執行個體中繼資料URL擷取臨時憑證,無需特別管理。
配置STS臨時訪問憑證
建立RAM使用者。
具體操作,請參見建立RAM使用者。
為RAM使用者授予
AliyunSTSAssumeRoleAccess
許可權。具體操作,請參見為RAM使用者授權。
使用RAM使用者調用STS服務的AssumeRole介面擷取STS臨時訪問憑證。
具體操作,請參見AssumeRole。
配置STS臨時訪問憑證。
環境變數
使用擷取的STS臨時訪問憑證配置環境變數。
macOS
開啟終端。
執行以下命令。
nano ~/.bash_profile
在檔案末尾添加從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
export OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH**** export OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn**** export OSS_SESSION_TOKEN=CAES+wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s˙∂˙∂3qaPer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc+mRR9KAbHUefqH+rdjZqjTF7p2m1wJXP8S6k+G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt****
按
Ctrl
+X
,按Y
鍵確認儲存,然後按Enter
鍵退出檔案。執行以下命令以使更改生效。
source ~/.bash_profile
執行以下命令驗證環境變數配置。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET echo $OSS_SESSION_TOKEN
成功返回樣本如下:
STS.NV5ZCwphFSXqscqUHAKbH**** IrVTNZNy5yQelTETg0cZML3TQn**** CAES+wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s˙∂˙∂3qaPer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc+mRR9KAbHUefqH+rdjZqjTF7p2m1wJXP8S6k+G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt****
Linux
開啟終端。
執行以下命令。
sudo vim /etc/profile
在檔案末尾添加從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
export OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH**** export OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn**** export OSS_SESSION_TOKEN=CAES+wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s˙∂˙∂3qaPer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc+mRR9KAbHUefqH+rdjZqjTF7p2m1wJXP8S6k+G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt****
按
ESC
鍵退出編輯模式,輸入:wq
,然後按Enter
鍵儲存並退出檔案。執行以下命令以使更改生效。
source /etc/profile
執行以下命令驗證環境變數配置。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET echo $OSS_SESSION_TOKEN
成功返回樣本如下:
STS.NV5ZCwphFSXqscqUHAKbH**** IrVTNZNy5yQelTETg0cZML3TQn**** CAES+wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s˙∂˙∂3qaPer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc+mRR9KAbHUefqH+rdjZqjTF7p2m1wJXP8S6k+G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt****
Windows
開啟命令列。
執行以下命令配置從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
set OSS_ACCESS_KEY_ID=STS.NV5ZCwphFSXqscqUHAKbH**** set OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn**** set OSS_SESSION_TOKEN=CAES+wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s˙∂˙∂3qaPer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc+mRR9KAbHUefqH+rdjZqjTF7p2m1wJXP8S6k+G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt****
執行以下命令以使更改生效。
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%"
執行以下命令驗證環境變數配置。
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET% echo %OSS_SESSION_TOKEN%
成功返回樣本如下:
STS.NV5ZCwphFSXqscqUHAKbH**** IrVTNZNy5yQelTETg0cZML3TQn**** CAES+wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s˙∂˙∂3qaPer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc+mRR9KAbHUefqH+rdjZqjTF7p2m1wJXP8S6k+G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVt****
從環境變數中擷取STS臨時訪問憑證。
// 使用環境變數中擷取的STS臨時存取金鑰和安全性權杖配置訪問憑證。 EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
代碼嵌入
警告在代碼中嵌入訪問憑證會導致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源OSS,造成損失。因此,建議您使用更安全的方式,例如從環境變數中擷取訪問憑證,來提高安全性。
// STS臨時存取金鑰AccessKey ID和AccessKey Secret。 String accessKeyId = "yourAccessKeyId"; String accessKeySecret = "yourAccessKeySecret"; // STS安全性權杖SecurityToken。 String securityToken = "yourSecurityToken"; // 使用代碼嵌入的STS臨時存取金鑰和安全性權杖配置訪問憑證。 CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret, securityToken);
配置RAM角色
擷取RAM使用者的存取金鑰。
具體操作,請參見建立RAM使用者的AccessKey。
重要為降低RAM使用者的存取金鑰被泄露的風險,對於超過3個月的RAM使用者的存取金鑰,建議及時輪換。對於長期不用的RAM使用者的存取金鑰,建議及時禁用並刪除。
擷取目標RAM角色的RamRoleArn。
說明RamRoleArn是RAM角色的ARN資訊,即需要扮演的角色ID。格式為acs:ram::$accountID:role/$roleName。$accountID為阿里雲帳號ID。$roleName為RAM角色名稱。
具體操作,請參見查看RAM角色。
配置RAM使用者的存取金鑰和目標RAM角色的RAMRoleArn作為訪問憑證。
環境變數
使用擷取的RAM使用者的存取金鑰和目標RAM角色的RamRoleArn配置環境變數。
macOS
開啟終端。
執行以下命令。
nano ~/.bash_profile
在檔案末尾添加擷取的RAM使用者的存取金鑰和RAM角色的RamRoleArn。
export OSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D**** export OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn**** export OSS_STS_ROLE_ARN=acs:ram::17464958********:role/ossststest
按
Ctrl
+X
,按Y
鍵確認儲存,然後按Enter
鍵退出檔案。執行以下命令以使更改生效。
source /etc/profile
執行以下命令驗證環境變數配置。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET echo $OSS_STS_ROLE_ARN
成功返回樣本如下:
LTAI4GDty8ab9W4Y1D**** IrVTNZNy5yQelTETg0cZML3TQn**** acs:ram::17464958********:role/ossststest
Linux
開啟終端。
執行以下命令。
sudo vim /etc/profile
在檔案末尾添加擷取的RAM使用者的存取金鑰和RAM角色的RamRoleArn。
export OSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D**** export OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn**** export OSS_STS_ROLE_ARN=acs:ram::17464958********:role/ossststest
按
ESC
鍵退出編輯模式,輸入:wq
,然後按Enter
鍵儲存並退出檔案。執行以下命令以使更改生效。
source /etc/profile
執行以下命令驗證環境變數配置。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET echo $OSS_STS_ROLE_ARN
成功返回樣本如下:
LTAI4GDty8ab9W4Y1D**** IrVTNZNy5yQelTETg0cZML3TQn**** acs:ram::17464958********:role/ossststest
Windows
開啟命令列。
執行以下命令配置RAM使用者的存取金鑰和RAM角色的RamRoleArn。
set OSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D**** set OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn**** set OSS_STS_ROLE_ARN=acs:ram::17464958********:role/ossststest
執行以下命令以使更改生效。
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%"
執行以下命令驗證環境變數配置。
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET% echo %OSS_STS_ROLE_ARN%
成功返回樣本如下:
LTAI4GDty8ab9W4Y1D**** IrVTNZNy5yQelTETg0cZML3TQn**** acs:ram::17464958********:role/ossststest
從環境變數中擷取RAM使用者的存取金鑰RAM角色的RamRoleArn。
// 授權STSAssumeRole訪問的Region。以華東1(杭州)為例,其它Region請根據實際情況填寫。 String region = "cn-hangzhou"; // 從環境變數中擷取RAM使用者的存取金鑰(AccessKey ID和AccessKey Secret)。 String accessKeyId = System.getenv("OSS_ACCESS_KEY_ID"); String accessKeySecret = System.getenv("OSS_ACCESS_KEY_SECRET"); // 從環境變數中擷取RAM角色的RamRoleArn。 String roleArn = System.getenv("OSS_STS_ROLE_ARN"); // 使用環境變數中擷取的RAM使用者的存取金鑰和RAM角色的RamRoleArn配置訪問憑證。 STSAssumeRoleSessionCredentialsProvider credentialsProvider = CredentialsProviderFactory .newSTSAssumeRoleSessionCredentialsProvider( region, accessKeyId, accessKeySecret, roleArn );
代碼嵌入
警告在代碼中嵌入訪問憑證會導致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源OSS,造成損失。因此,建議您使用更安全的方式,例如從環境變數中擷取訪問憑證,來提高安全性。
// 授權STSAssumeRole訪問的Region。以華東1(杭州)為例,其它Region請根據實際情況填寫。 String region = "cn-hangzhou"; // 從環境變數中擷取RAM使用者的存取金鑰(AccessKey ID和AccessKey Secret)。 String accessKeyId = System.getenv("OSS_ACCESS_KEY_ID"); String accessKeySecret = System.getenv("OSS_ACCESS_KEY_SECRET"); // 填寫RAM角色的ARN資訊,即需要扮演的角色ID。 String roleArn = "acs:ram::17464958********:role/ossststest"; // 使用代碼嵌入的RAM使用者的訪問密和RAM角色的RamRoleArn配置訪問憑證。 STSAssumeRoleSessionCredentialsProvider credentialsProvider = CredentialsProviderFactory .newSTSAssumeRoleSessionCredentialsProvider( region, accessKeyId, accessKeySecret, roleArn );
配置ECS的RAM角色
為ECS執行個體授予RAM角色。
具體操作,請參見授予執行個體RAM角色。
配置ECS的RAM角色作為訪問憑證。
// 通過ECS RAM角色擷取訪問憑證,例如以角色名稱(ecs-ram-role)訪問為例。 InstanceProfileCredentialsProvider credentialsProvider = CredentialsProviderFactory.newInstanceProfileCredentialsProvider("ecs-ram-role");
使用長期訪問憑證
當您準備在應用或服務中長期使用Java SDK訪問OSS服務時,您可以通過以下方式配置長期訪問憑證。
配置RAM使用者的存取金鑰:如果您需要長期訪問您的OSS,您可以通過RAM使用者的存取金鑰的方式訪問您的OSS。
配置RAM使用者的存取金鑰
擷取RAM使用者的存取金鑰。
如何擷取RAM使用者的存取金鑰,請參見建立RAM使用者的AccessKey。
重要對於超過3個月的RAM使用者的存取金鑰,建議及時輪換。對於長期不用的RAM使用者的存取金鑰,建議及時禁用並刪除。以降低RAM使用者的存取金鑰被泄露的風險。
配置RAM使用者的存取金鑰。
環境變數
配置環境變數。
macOS
開啟終端。
執行以下命令。
nano ~/.bash_profile
在檔案末尾添加RAM使用者的存取金鑰。
export OSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D**** export OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn****
按
Ctrl
+X
,按Y
鍵確認儲存,然後按Enter
鍵退出檔案。輸入以下命令以使更改生效。
source ~/.bash_profile
執行以下命令驗證環境變數配置。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
成功返回樣本如下:
LTAI4GDty8ab9W4Y1D**** IrVTNZNy5yQelTETg0cZML3TQn****
Linux
開啟終端。
執行以下命令。
sudo vim /etc/profile
在檔案末尾添加RAM使用者的存取金鑰。
export OSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D**** export OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn****
按
ESC
鍵退出編輯模式,輸入:wq
,然後按Enter
鍵儲存並退出檔案。輸入以下命令以使更改生效。
source /etc/profile
執行以下命令驗證環境變數配置。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
成功返回樣本如下:
LTAI4GDty8ab9W4Y1D**** IrVTNZNy5yQelTETg0cZML3TQn****
Windows
開啟命令列。
執行以下命令配置RAM使用者的存取金鑰。
set OSS_ACCESS_KEY_ID=LTAI4GDty8ab9W4Y1D**** set OSS_ACCESS_KEY_SECRET=IrVTNZNy5yQelTETg0cZML3TQn****
執行以下命令以使更改生效。
setx OSS_ACCESS_KEY_ID "%OSS_ACCESS_KEY_ID%" setx OSS_ACCESS_KEY_SECRET "%OSS_ACCESS_KEY_SECRET%"
執行以下命令驗證環境變數配置。
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
成功返回樣本如下:
LTAI4GDty8ab9W4Y1D**** IrVTNZNy5yQelTETg0cZML3TQn****
從環境變數中擷取RAM使用者的存取金鑰。
// 使用環境變數中擷取的RAM使用者的存取金鑰配置訪問憑證。 EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
代碼嵌入
警告在代碼中嵌入訪問憑證會導致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源OSS,造成損失。因此,建議您使用更安全的方式,例如從環境變數中擷取訪問憑證,來提高安全性。
// 從環境變數中擷取RAM使用者的存取金鑰(AccessKey ID和AccessKey Secret)。 String accessKeyId = System.getenv("OSS_ACCESS_KEY_ID"); String accessKeySecret = System.getenv("OSS_ACCESS_KEY_SECRET"); // 使用代碼嵌入的RAM使用者的存取金鑰配置訪問憑證。 CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret);
OIDC訪問憑證
如果您需要瞭解阿里雲RAM支援基於OIDC角色SSO的更多資訊,請參見OIDC角色SSO概覽。
當您準備在應用或服務中使用OIDC認證訪問OSS服務時,您可以通過以下步驟配置訪問憑證。
添加alibabacloud_credentials依賴。
<dependency> <groupId>com.aliyun</groupId> <artifactId>credentials-java</artifactId> <version>LATEST</version> </dependency>
建立OIDC身份供應商並為其授予RAM角色。具體操作,請參見建立可信實體為身份供應商的RAM角色和為RAM角色授權。
配置OIDC的RAM角色作為訪問憑證。以下樣本中建立的client即可用來訪問OSS。
import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.auth.Credentials; import com.aliyun.oss.common.auth.CredentialsProvider; import com.aliyun.oss.common.auth.DefaultCredentials; import com.aliyun.oss.model.AccessControlList; public class OIDCRoleArnCredentialDemo { public static void main(String[] args) throws Exception { // Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。 String endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; com.aliyun.credentials.models.Config config = new com.aliyun.credentials.models.Config(); // 指定Credential類型,固定值為oidc_role_arn。 config.setType("oidc_role_arn"); // 角色的ARN資訊,即需要扮演的角色ID。 config.setRoleArn(System.getenv("ALIBABA_CLOUD_ROLE_ARN")); // 指定 OIDC 提供者的 ARN(Amazon Resource Name)。 config.setOidcProviderArn(System.getenv("ALIBABA_CLOUD_OIDC_PROVIDER_ARN")); // 指定 OIDC 令牌的檔案路徑,用於儲存OIDC令牌。 config.setOidcTokenFilePath(System.getenv("ALIBABA_CLOUD_OIDC_TOKEN_FILE")); // 角色會話名稱 config.setRoleSessionName("<RoleSessionName>"); // 設定更小的權限原則,非必填。樣本值:{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} config.setPolicy("<Policy>"); // RAM角色的外部ID,非必填。 // 此參數由外部方提供,用於防止混淆的代理問題。 config.setExternalId("<ExternalId>"); // 設定session到期時間 config.setRoleSessionExpiration(3600); com.aliyun.credentials.Client credentialsClient = new com.aliyun.credentials.Client(config); CredentialsProvider credsProvider = new OIDCRoleArnCredentialDemo.CredentialProviderWrapper(credentialsClient); // 建立OSSClient執行個體。 OSS ossClient = new OSSClientBuilder().build(endpoint, credsProvider); } private static class CredentialProviderWrapper implements CredentialsProvider { private com.aliyun.credentials.Client client; public CredentialProviderWrapper(com.aliyun.credentials.Client client) { this.client = client; } @Override public void setCredentials(Credentials credentials) { } public Credentials getCredentials() { String ak = client.getAccessKeyId(); String sk = client.getAccessKeySecret(); String token = client.getSecurityToken(); return new DefaultCredentials(ak, sk, token); } } }
後續步驟
配置訪問憑證後,您需要初始化OSSClient。詳情請參見初始化。