Skip to content

Commit e1b5245

Browse files
committed
Add testing changes
remove validations
1 parent 4a8bd5b commit e1b5245

File tree

2 files changed

+45
-22
lines changed

2 files changed

+45
-22
lines changed

kafka-connect-s3/src/main/java/io/confluent/connect/s3/S3SinkConnectorConfig.java

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,14 @@
7575
import io.confluent.connect.storage.partitioner.HourlyPartitioner;
7676
import io.confluent.connect.storage.partitioner.PartitionerConfig;
7777
import io.confluent.connect.storage.partitioner.TimeBasedPartitioner;
78+
import org.slf4j.Logger;
79+
import org.slf4j.LoggerFactory;
7880

7981
import static org.apache.kafka.common.config.ConfigDef.Range.atLeast;
8082

8183
public class S3SinkConnectorConfig extends StorageSinkConnectorConfig {
8284

85+
private static final Logger log = LoggerFactory.getLogger(S3SinkConnectorConfig.class);
8386
// S3 Group
8487
public static final String S3_BUCKET_CONFIG = "s3.bucket.name";
8588

@@ -949,8 +952,8 @@ public String awsMiddlewareRoleARN() {
949952
return getString(MIDDLEWARE_ROLE_ARN_CONFIG);
950953
}
951954

952-
public String awsExternalId() {
953-
return getString(CUSTOMER_ROLE_EXTERNAL_ID_CONFIG);
955+
public Password awsExternalId() {
956+
return getPassword(CUSTOMER_ROLE_EXTERNAL_ID_CONFIG);
954957
}
955958

956959
public int getPartSize() {
@@ -966,32 +969,37 @@ public AWSCredentialsProvider getCredentialsProvider() {
966969
try {
967970
AWSCredentialsProvider provider = ((Class<? extends AWSCredentialsProvider>)
968971
getClass(S3SinkConnectorConfig.CREDENTIALS_PROVIDER_CLASS_CONFIG)).newInstance();
972+
973+
String authMethod = getAuthenticationMethod();
974+
log.info("Authentication method: {}", authMethod);
969975

970976
if (provider instanceof Configurable) {
971977
Map<String, Object> configs = originalsWithPrefix(CREDENTIALS_PROVIDER_CONFIG_PREFIX);
972978
configs.remove(CREDENTIALS_PROVIDER_CLASS_CONFIG.substring(
973979
CREDENTIALS_PROVIDER_CONFIG_PREFIX.length()
974980
));
975981

976-
String authMethod = getAuthenticationMethod();
977-
if (authMethod == "IAM Assume Role") {
982+
configs.put(AWS_ACCESS_KEY_ID_CONFIG, awsAccessKeyId());
983+
configs.put(AWS_SECRET_ACCESS_KEY_CONFIG, awsSecretKeyId().value());
984+
((Configurable) provider).configure(configs);
985+
} else {
986+
authMethod = getAuthenticationMethod();
987+
988+
if (authMethod.equals("IAM Assume Role")) {
989+
Map<String, Object> configs = new HashMap<String, Object>();
978990
configs.put(CUSTOMER_ROLE_ARN_CONFIG, awsCustomerRoleARN());
979-
configs.put(CUSTOMER_ROLE_EXTERNAL_ID_CONFIG, awsExternalId());
991+
configs.put(CUSTOMER_ROLE_EXTERNAL_ID_CONFIG, awsExternalId().value());
980992
configs.put(MIDDLEWARE_ROLE_ARN_CONFIG, awsMiddlewareRoleARN());
981993

982994
provider = new AwsIamAssumeRoleChaining();
983995
((AwsIamAssumeRoleChaining) provider).configure(configs);
984996
} else {
985-
configs.put(AWS_ACCESS_KEY_ID_CONFIG, awsAccessKeyId());
986-
configs.put(AWS_SECRET_ACCESS_KEY_CONFIG, awsSecretKeyId().value());
987-
((Configurable) provider).configure(configs);
988-
}
989-
} else {
990-
final String accessKeyId = awsAccessKeyId();
991-
final String secretKey = awsSecretKeyId().value();
992-
if (StringUtils.isNotBlank(accessKeyId) && StringUtils.isNotBlank(secretKey)) {
993-
BasicAWSCredentials basicCredentials = new BasicAWSCredentials(accessKeyId, secretKey);
994-
provider = new AWSStaticCredentialsProvider(basicCredentials);
997+
final String accessKeyId = awsAccessKeyId();
998+
final String secretKey = awsSecretKeyId().value();
999+
if (StringUtils.isNotBlank(accessKeyId) && StringUtils.isNotBlank(secretKey)) {
1000+
BasicAWSCredentials basicCredentials = new BasicAWSCredentials(accessKeyId, secretKey);
1001+
provider = new AWSStaticCredentialsProvider(basicCredentials);
1002+
}
9951003
}
9961004
}
9971005

kafka-connect-s3/src/main/java/io/confluent/connect/s3/auth/iamassume/AwsIamAssumeRoleChaining.java

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@
2121
import com.amazonaws.auth.STSAssumeRoleSessionCredentialsProvider;
2222
import com.amazonaws.auth.AWSCredentialsProvider;
2323
import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder;
24+
2425
import org.apache.kafka.common.config.AbstractConfig;
2526
import org.apache.kafka.common.config.ConfigDef;
27+
import org.slf4j.Logger;
28+
import org.slf4j.LoggerFactory;
2629

2730
import static io.confluent.connect.s3.S3SinkConnectorConfig.CUSTOMER_ROLE_ARN_CONFIG;
2831
import static io.confluent.connect.s3.S3SinkConnectorConfig.CUSTOMER_ROLE_EXTERNAL_ID_CONFIG;
@@ -31,11 +34,12 @@
3134

3235
public class AwsIamAssumeRoleChaining implements AWSCredentialsProvider {
3336

37+
private static final Logger log = LoggerFactory.getLogger(AwsIamAssumeRoleChaining.class);
3438
private static final ConfigDef STS_CONFIG_DEF = new ConfigDef()
3539
.define(
3640
CUSTOMER_ROLE_EXTERNAL_ID_CONFIG,
3741
ConfigDef.Type.STRING,
38-
ConfigDef.Importance.MEDIUM,
42+
ConfigDef.Importance.HIGH,
3943
"The role external ID used when retrieving session credentials under an assumed role."
4044
).define(
4145
CUSTOMER_ROLE_ARN_CONFIG,
@@ -53,6 +57,7 @@ public class AwsIamAssumeRoleChaining implements AWSCredentialsProvider {
5357
private String customerRoleExternalId;
5458
private String middlewareRoleArn;
5559
private STSAssumeRoleSessionCredentialsProvider stsCredentialProvider;
60+
private STSAssumeRoleSessionCredentialsProvider initialProvider;
5661

5762
// Method to initiate role chaining
5863
public void configure(Map<String, ?> configs) {
@@ -62,12 +67,13 @@ public void configure(Map<String, ?> configs) {
6267
customerRoleExternalId = config.getString(CUSTOMER_ROLE_EXTERNAL_ID_CONFIG);
6368
middlewareRoleArn = config.getString(MIDDLEWARE_ROLE_ARN_CONFIG);
6469

65-
STSAssumeRoleSessionCredentialsProvider initialProvider = buildProvider(
70+
initialProvider = buildProvider(
6671
middlewareRoleArn,
6772
"middlewareSession",
6873
"",
6974
null
7075
);
76+
log.info("Got initial provider");
7177

7278
// Use the credentials from the initial role to assume the subsequent role
7379
stsCredentialProvider = buildProvider(
@@ -76,6 +82,7 @@ public void configure(Map<String, ?> configs) {
7682
customerRoleExternalId,
7783
initialProvider
7884
);
85+
log.info("Got final credentials");
7986
}
8087

8188
// Updated buildProvider to optionally accept an existing AwsCredentialsProvider
@@ -99,10 +106,9 @@ private STSAssumeRoleSessionCredentialsProvider buildProvider(
99106
.build();
100107
} else {
101108
credentialsProvider = new STSAssumeRoleSessionCredentialsProvider
102-
.Builder(roleArn, roleSessionName)
103-
.withStsClient(AWSSecurityTokenServiceClientBuilder.defaultClient())
104-
.withExternalId(roleExternalId)
105-
.build();
109+
.Builder(roleArn, roleSessionName)
110+
.withStsClient(AWSSecurityTokenServiceClientBuilder.defaultClient())
111+
.build();
106112
}
107113
return credentialsProvider;
108114
}
@@ -114,6 +120,15 @@ public AWSCredentials getCredentials() {
114120

115121
@Override
116122
public void refresh() {
117-
stsCredentialProvider.refresh();
123+
if (initialProvider != null) {
124+
initialProvider.refresh();
125+
stsCredentialProvider = buildProvider(
126+
customerRoleArn,
127+
"customerSession",
128+
customerRoleExternalId,
129+
initialProvider
130+
);
131+
}
132+
//stsCredentialProvider.refresh();
118133
}
119134
}

0 commit comments

Comments
 (0)