The owner of the dataset?

To share out a dataset, you need to have the (roles/bigquery.dataOwner) or the roles/bigquery.admin role.

The user of the dataset?

For the user, assuming read-only access:

  • roles/bigquery.dataViewer
  • roles/bigquery.jobUser)

are needed. Tweak as needed for edit and update and delete permissions.

Users or Service Accounts?

These roles should be attached to a service account, not human users.