kms:Decryptcurl -X 'POST' \
'https://<your-immuta-url.com>/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>' \
-d '{
"type": "Native S3",
"autoBootstrap": false,
"config": {
"name": "<name-of-your-integration>",
"awsAccountId": "<your-aws-account-id>",
"awsRegion": "<your-aws-region>",
"awsLocationRole": "<arn:aws:iam::your-location-role-arn:role/access-grants-instance-role>",
"awsLocationPath": "<your-s3-location-path>",
"authenticationType": "auto"
}
}'{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1234567891011",
"Effect": "Allow",
"Principal": {
"Service":"access-grants.s3.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:SetSourceIdentity"
]
}
]
} curl -X 'POST' \
'https://<your-immuta-url.com>/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>' \
-d '{
"type": "Native S3",
"autoBootstrap": false,
"config": {
"name": "<name-of-your-integration>",
"awsAccountId": "<your-aws-account-id>",
"awsRegion": "<your-aws-region>",
"awsLocationRole": "<arn:aws:iam::your-location-role-arn:role/access-grants-instance-role>",
"awsLocationPath": "<your-s3-location-path>",
"authenticationType": "accessKey",
"awsAccessKeyId": "<your-access-key-id>",
"awsSecretAccessKey": "<your-secret-access-key>"
}
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "There is no existing integration matching this configuration",
"status": "passed"
},
{
"name": "The provided integration name is unique across Immuta S3 integrations",
"status": "passed"
},
{
"name": "The provided access grants location role is a valid ARN format",
"status": "passed"
},
{
"name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
"status": "passed"
},
{
"name": "An AWS Access Grants instance is configured in the provided AWS account and region",
"status": "passed"
},
{
"name": "The provided S3 path exists and Immuta can list prefixes",
"status": "passed"
},
{
"name": "An AWS Access Grants location does not yet exist for the provided path",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Access Grants location already exists on provided path."
}curl -X 'GET' \
'https://<your-immuta-url.com>/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>'{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "There is no existing integration matching this configuration",
"status": "passed"
},
{
"name": "The provided integration name is unique across Immuta S3 integrations",
"status": "passed"
},
{
"name": "The provided access grants location role is a valid ARN format",
"status": "passed"
},
{
"name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
"status": "passed"
},
{
"name": "An AWS Access Grants instance is configured in the provided AWS account and region",
"status": "passed"
},
{
"name": "The provided S3 path exists and Immuta can list prefixes",
"status": "passed"
},
{
"name": "An AWS Access Grants location does not yet exist for the provided path",
"status": "passed"
}
]
},
"type": "Native S3",
"autoBootstrap": false,
"config": {
"port": 443,
"name": "S3 integration",
"awsAccountId": "123456789",
"awsRegion": "us-east-1",
"awsLocationRole": "arn:aws:iam::123456789:role/access-grants-instance-role",
"awsLocationPath": "s3://",
"authenticationType": "accessKey",
"awsAccessKeyId": "123456789",
"awsSecretAccessKey": "123456789"
}
}curl -X 'GET' \
'https://<your-immuta-url.com>/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>'[
{
"id": "1",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
] },
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
}
},
{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "There is no existing integration matching this configuration",
"status": "passed"
},
{
"name": "The provided integration name is unique across Immuta S3 integrations",
"status": "passed"
},
{
"name": "The provided access grants location role is a valid ARN format",
"status": "passed"
},
{
"name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
"status": "passed"
},
{
"name": "An AWS Access Grants instance is configured in the provided AWS account and region",
"status": "passed"
},
{
"name": "The provided S3 path exists and Immuta can list prefixes",
"status": "passed"
},
{
"name": "An AWS Access Grants location does not yet exist for the provided path",
"status": "passed"
}
] },
"type": "Native S3",
"autoBootstrap": false,
"config": {
"port": 443,
"name": "S3 integration",
"awsAccountId": "123456789",
"awsRegion": "us-east-1",
"awsLocationRole": "arn:aws:iam::123456789:role/access-grants-instance-role",
"awsLocationPath": "s3://",
"authenticationType": "accessKey",
"awsAccessKeyId": "123456789",
"awsSecretAccessKey": "123456789"
}
}
]curl -X 'PUT' \
'https://<your-immuta-url.com>/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>' \
-d '{
"type": "Native S3",
"autoBootstrap": false,
"config": {
"name": "<your-edited-integration-name>",
"awsAccountId": "<your-aws-account-id>",
"awsRegion": "<your-aws-region>",
"awsLocationRole": "<arn:aws:iam::your-location-role-arn:role/access-grants-instance-role>",
"awsLocationPath": "<your-s3-location-path>",
"authenticationType": "<accessKey-or-auto>",
"awsAccessKeyId": "<your-aws-access-key-id>",
"awsSecretAccessKey": "<your-secret-access-key>"
}
}'{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "There is no existing integration matching this configuration",
"status": "passed"
},
{
"name": "The provided integration name is unique across Immuta S3 integrations",
"status": "passed"
},
{
"name": "The provided access grants location role is a valid ARN format",
"status": "passed"
},
{
"name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
"status": "passed"
},
{
"name": "An AWS Access Grants instance is configured in the provided AWS account and region",
"status": "passed"
},
{
"name": "The provided S3 path exists and Immuta can list prefixes",
"status": "passed"
},
{
"name": "An AWS Access Grants location does not yet exist for the provided path",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}curl -X 'DELETE' \
'https://<your-immuta-url.com>/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>'{
"id": "123456789",
"status": "deleting",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "The provided access grants location role is a valid ARN format",
"status": "passed"
},
{
"name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
"status": "passed"
},
{
"name": "An AWS Access Grants instance is configured in the provided AWS account and region",
"status": "passed"
},
{
"name": "The provided S3 path exists and Immuta can list prefixes",
"status": "passed"
}
]
}
}{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ObjectLevelReadPermissions",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectAcl",
"s3:GetObjectVersionAcl",
"s3:ListMultipartUploadParts"
],
"Resource": [
<bucket arn>
]
},
{
"Sid": "ObjectLevelWritePermissions",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectVersionAcl",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:AbortMultipartUpload"
],
"Resource": [
<bucket arn>
]
},
{
"Sid": "BucketLevelReadPermissions",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:ListBucket"
],
"Resource": [
<bucket arn>
]
}
]
}{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RolePermissions",
"Effect": "Allow",
"Action": [
"iam:GetRole",
"iam:PassRole"
],
"Resource": "<location_role_arn>"
},
{
"Sid": "AccessGrants",
"Effect": "Allow",
"Action": [
"s3:CreateAccessGrant",
"s3:DeleteAccessGrantsLocation",
"s3:GetAccessGrantsLocation",
"s3:CreateAccessGrantsLocation",
"s3:GetAccessGrantsInstance",
"s3:GetAccessGrantsInstanceForPrefix",
"s3:GetAccessGrantsInstanceResourcePolicy",
"s3:ListAccessGrants",
"s3:ListAccessGrantsLocations",
"s3:ListAccessGrantsInstances",
"s3:DeleteAccessGrant",
"s3:GetAccessGrant"
],
"Resource": [
"<access_grants_instance_arn>"
]
}
]
}s3:GetAccessGrantsLocation{
"Sid": "sso",
"Effect": "Allow",
"Action": [
"sso:DescribeInstance",
"sso:DescribeApplication",
"sso-directory:DescribeUsers"
],
"Resource": [
"<iam_identity_center_instance_arn>",
"<iam_identity_center_application_arn_for_s3_access_grants>",
"arn:aws:identitystore:::user/*",
"arn:aws:identitystore::<aws_account>:identitystore/<identity_store_id>"
]
}, {
"Sid": "idc",
"Effect": "Allow",
"Action": [
"identitystore:DescribeUser",
"identitystore:DescribeGroup"
],
"Resource": [
"<iam_identity_center_instance_arn>",
"<iam_identity_center_application_arn_for_s3_access_grants>",
"arn:aws:identitystore:::user/*",
"arn:aws:identitystore::<aws_account>:identitystore/<identity_store_id>"
]
}