Google Cloud Storage(GCS)にアクセスする際に使用できる方法として、「HMAC鍵の作成」と「サービスアカウントの作成とロールの付与」があることがわかったが、違いがわからなかったので調べた
1. HMAC鍵の作成
HMAC(Hash-based Message Authentication Code)鍵は、Amazon S3互換のAPIやGCSに対してプログラムから直接アクセスする際に使用される
主に以下の特徴がある
- 使用目的: 主にプログラムによる署名付きリクエストの認証に使用され、S3互換のAPIを利用する場面で役立つ
- アクセスタイプ: 対象のプロジェクトやバケットに対する直接のアクセス権限を持つ。クライアントがHMAC鍵を使ってリクエストを行う際、リクエストに対して認証情報を含めることで、GCSのリソースにアクセスする
- 柔軟性: APIキーやプライベートアクセス用の認証に特化している。特にS3互換のツールやプラットフォームを使っている場合にはHMACが推奨される
- セキュリティの管理: HMAC鍵はAPIキーのようなものであり、管理が簡単だがアクセス権を細かく制御するのは難しい
2. サービスアカウントの作成とロールの付与
サービスアカウントは、Google Cloud上のリソースに対して認証・認可を行うために使われる
これを使って、GCSや他のGoogle Cloudリソースにアクセスする権限を与えることができる
- 使用目的: より柔軟かつ詳細なアクセス権限の制御が必要な場合に使用される。たとえば、サービスアカウントに対して特定のバケットにのみアクセスできるように権限を与えることができる
- アクセスタイプ: IAM(Identity and Access Management)を使って、プロジェクトやリソースに対して非常に細かい制御を行うことが可能。ロール(役割)を付与することで、そのアカウントができる操作を制限することができる
- 柔軟性: アクセス権限を細かく設定できるため、セキュリティ面で強力。GCP内の他のリソースに対しても統一された認証システムを使えるため、シームレスにアクセスを管理できる
- セキュリティの管理: サービスアカウントには詳細なIAMロールを割り当てることで、必要な最小限のアクセス権限を付与する「最小権限の原則」を守ることができる。また、鍵はJSON形式のキーとして生成され、必要に応じて削除やローテーションが可能