gsutil などの API を利用することで制限可能です。
手順は次のとおりです。
1. 特定のバケットのみにアクセスしたい対象の GCP サービスアカウント(サービスアカウントID)を『GCP サービスアカウント管理』でクラウドストレージ関連のすべての役割を外します。
※1つでも設定されているとすべてのバケットへアクセスできてしまいます。
2. 「ストレージ管理者」の役割を持った連携ユーザーで gsutil または各種 API を用いてバケットに対しポリシー (iam) を設定 (setIamPolicy) します。
iam 設定において引数 members には user ではなく serviceAccount を指定します。
また、{バケット名}はアクセスさせたいバケット名を指定し、{サービスアカウントID} はアクセスさせたいGCP サービスアカウント (サービスアカウントID) を指定します。
例)オブジェクト参照権付与
# gsutil iam ch serviceAccount:{サービスアカウントID}:objectViewer gs://{バケット名}
※1行で入力します。
例)オブジェクト参照権削除
# gsutil iam ch -d serviceAccount:{サービスアカウントID}:objectViewer gs://{バケット名}
※1行で入力します。
上記の手順を行う際に、連携ユーザーではなく、アクセス制限をしたいサービスアカウントID 自身でオブジェクト参照権付与や削除を実施したい場合には、『GCP サービスアカウント管理』にて操作を実施したいサービスアカウントID の役割に『ストレージ管理者』を設定してバケットが見える状態にしたうえで gsutil コマンドを実施してください。
実施後、役割を空欄にすることで指定したバケットのみアクセスできる状態になります。
次のGoogleのドキュメントもご参照ください。