Skip to main content

IAM Permissions Required

1. AWS (Amazon Web Services) IAM Policy​

To successfully sync your source data with S3, ensure that your AWS IAM policy grants at least minimal permissions for listing, creating, reading, and writing to the S3 bucket. Below is a sample IAM policy.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3BucketReadWrite",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucket*",
"s3:*Object"
],
"Resource": [
"arn:aws:s3:::{S3_BUCKET_NAME}",
"arn:aws:s3:::{S3_BUCKET_NAME}/*"
]
},
{
"Sid": "ListAllBuckets",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}
]
}

2. GCS (Google Cloud Storage) IAM Policy​

To successfully sync source data using GCS, ensure that GCS IAM policy grants at least minimal permission for listing, creating, reading, and writing to S3 bucket.

Using GCloud CLI​

  • Create a service account in GCS. Install Google Cloud SDK (gcloud CLI). Initialize the SDK using gcloud init command.

  • Login to GCS account, use gcloud auth login command.

  • Set the preferred project ID, use gcloud config set project Project-ID. Replace 'Project-ID' with your actual project id.

  • Create minimal set of IAM role required for the sync to GCS bucket.

    gcloud iam roles create storage.customAccess \
    --project="$(gcloud config get-value project)" \
    --file=/user-preferred-directory/gcs_policy.yaml
  • Sample gcs_policy.yaml with minimal set of permissions required.

    gcs_policy.yaml
    title: Custom Storage Access
    description: Equivalent to AWS S3 policy (List/Get bucket, full object access, list all buckets)
    stage: GA
    includedPermissions:
    - storage.buckets.getIamPolicy
    - storage.buckets.get
    - storage.buckets.list
    - storage.objects.list
    - storage.objects.get
    - storage.objects.create
    - storage.objects.delete
    - storage.objects.update
  • Replace 'Project-ID' and 'gcs-based-service-account' with actual GCS project id and service account.

    gcs_rolebinding.json
    {
    "bindings": [
    {
    "role": "projects/Project-ID/roles/storage.customAccess",
    "members": [
    "serviceAccount:gcs-based-service-account.com"
    ]
    }
    ]
    }
  • Bind the role to service account.

    gcloud storage buckets set-iam-policy \
    gs://<bucket-name> \
    /user-preferred-directory/gcs_rolebinding.json
  • Create a GCS bucket and HMAC keys for the service account for whom the above role is defined.

Using GCP​

  • Create a project.

  • Creating service account - permissions can be given then and there as well.

    Google Cloud create service account form, with fields for name, description, and optional permissions.

  • Create a GCS bucket and HMAC keys for the service account

info

For more information on HMAC keys, refer to this GCP HMAC Keys.




💡 Join the OLake Community!

Got questions, ideas, or just want to connect with other data engineers?
👉 Join our Slack Community to get real-time support, share feedback, and shape the future of OLake together. 🚀

Your success with OLake is our priority. Don’t hesitate to contact us if you need any help or further clarification!