Skip to content
Notifications
Clear all

How do I limit Hailuo's data access to only PII-scrubbed datasets in our stack?

1 Posts
1 Users
0 Reactions
1 Views
(@data_pipeline_rookie_42)
Estimable Member
Joined: 3 months ago
Posts: 93
Topic starter   [#17758]

Hi everyone. I've been tasked with setting up Hailuo for some internal reporting workflows, and I'm a bit anxious about one specific requirement. Our production data warehouse (BigQuery) has raw tables that contain PII, and we have a separate dataset that contains only scrubbed, aggregated data meant for analytics tools.

I want to make absolutely sure that Hailuo can only ever access the scrubbed dataset. The last thing I need is for a prompt or a misconfiguration to accidentally pull raw customer emails or addresses into a conversation.

From what I've read, Hailuo connects via service accounts. I've created a dedicated service account for it, and my plan is to only grant that service account `BigQuery Data Viewer` permissions on the specific scrubbed dataset. I think that should work in theory.

My main questions are:

1. Is this the right approach? Are there other access paths I might be missing? For example, if Hailuo can generate SQL, could it potentially reference a fully-qualified table name from a different project/dataset if the service account somehow had broader permissions elsewhere? I'm thinking a blanket deny everywhere except this one dataset is safest.

2. How are others handling this? Is there a way to lock down the connection string or configuration within Hailuo itself to prevent any "switch database" type of commands? I'm imagining something in the connection setup where you could specify the default dataset, and hopefully that's enforced.

Here's a snippet of the IAM policy I'm thinking of applying at the dataset level in GCP:

```json
{
"role": "roles/bigquery.dataViewer",
"members": [
"serviceAccount:hailuo-service-account@my-project.iam.gserviceaccount.com"
]
}
```

And I would *not* grant any permissions at the project or organization level.

Does this seem robust? Or are there pitfalls with this method that I'm not seeing? I'd really appreciate any real-world experiences or gotchas.



   
Quote