本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
以下 Java 示例显示了如何使用该PutPolicy操作。
该操作将基于资源的策略附加到私有 CA,从而实现跨账户共享。获得政策授权后,居住在其他 AWS 账户中的委托人可以使用其不拥有的私有 CA 签发和续订私有终端实体证书。您可以通过调用操作来找到私有 CA 的 ARN。ListCertificateAuthorities有关策略的示例,请参阅基于资源的策略的 AWS 私有 CA 指导。
将策略附加到 CA 后,您可以使用GetPolicy操作对其进行检查,也可以使用DeletePolicy操作将其删除。
package com.amazonaws.samples;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.services.acmpca.AWSACMPCA;
import com.amazonaws.services.acmpca.AWSACMPCAClientBuilder;
import com.amazonaws.AmazonClientException;
import com.amazonaws.services.acmpca.model.PutPolicyRequest;
import com.amazonaws.services.acmpca.model.PutPolicyResult;
import com.amazonaws.services.acmpca.model.AWSACMPCAException;
import com.amazonaws.services.acmpca.model.ConcurrentModificationException;
import com.amazonaws.services.acmpca.model.InvalidArnException;
import com.amazonaws.services.acmpca.model.InvalidStateException;
import com.amazonaws.services.acmpca.model.InvalidPolicyException;
import com.amazonaws.services.acmpca.model.LockoutPreventedException;
import com.amazonaws.services.acmpca.model.RequestFailedException;
import com.amazonaws.services.acmpca.model.ResourceNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class PutPolicy {
public static void main(String[] args) throws Exception {
// Retrieve your credentials from the C:\Users\name\.aws\credentials file
// in Windows or the .aws/credentials file in Linux.
AWSCredentials credentials = null;
try {
credentials = new ProfileCredentialsProvider("default").getCredentials();
} catch (Exception e) {
throw new AmazonClientException("Cannot load your credentials from file.", e);
}
// Define the endpoint for your sample.
String endpointRegion = "region
"; // Substitute your region here, e.g. "us-west-2"
String endpointProtocol = "https://acm-pca." + endpointRegion + ".amazonaws.com/";
EndpointConfiguration endpoint =
new AwsClientBuilder.EndpointConfiguration(endpointProtocol, endpointRegion);
// Create a client that you can use to make requests.
AWSACMPCA client = AWSACMPCAClientBuilder.standard()
.withEndpointConfiguration(endpoint)
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.build();
// Create the request object.
PutPolicyRequest req = new PutPolicyRequest();
// Set the resource ARN.
req.withResourceArn("arn:aws
:acm-pca:us-east-1
:111122223333
:certificate-authority/11223344-1234-1122-2233-112233445566
");
// Import and set the policy.
// Note: This code assumes the file "ShareResourceWithAccountPolicy.json" is in a folder titled policy.
String policy = new String(Files.readAllBytes(Paths.get("policy
", "ShareResourceWithAccountPolicy.json
")));
req.withPolicy(policy);
// Retrieve a list of your CAs.
PutPolicyResult result = null;
try {
result = client.putPolicy(req);
} catch (ConcurrentModificationException ex) {
throw ex;
} catch (InvalidArnException ex) {
throw ex;
} catch (InvalidStateException ex) {
throw ex;
} catch (InvalidPolicyException ex) {
throw ex;
} catch (LockoutPreventedException ex) {
throw ex;
} catch (RequestFailedException ex) {
throw ex;
} catch (ResourceNotFoundException ex) {
throw ex;
} catch (AWSACMPCAException ex) {
throw ex;
}
}
}