こんにちは!梶尾です!
今回はGoogle Cloud CLIに対して、サービスアカウントを認証して実際に使用してみましたのでご紹介いたします。
本記事でわかること
- Google Cloud CLIのインストール方法
- サービスアカウントの作成方法
- サービスアカウントの認証方法
Google Cloud CLIのインストール方法
インストールについて
gcloud CLIをインストールする
1.上記サイトにアクセスし、Google Cloud CLI インストーラをダウンロードします。
2.ダウンロードしたインストーラを実行し、インストールします。
3.インストールが完了したら、Google Cloud SDK Shellを実行します。
初期セットアップについて
1.”Y”を入力しEnterを押下すると、自動でログイン画面が表示されます。
ログインしたことがある場合はアカウント名が表示されていますので、クリックして選択します。
ログインしたことが無い場合はGoogleアカウントでログインします。
2.Googleアカウントへのアクセスリクエスト画面が表示されます。
内容を確認し、許可をクリックします。
3.gcloud CLIの認証が完了しました。と表示されたら、Google Cloud SDK Shellを確認してください。
4.使用可能なプロジェクト名が一覧で表示されておりますので、番号を入力しEnterを押下します。
5.ComputeEngineで使用するデフォルトのゾーン設定が行えます。
設定を行う場合は”Y”、行わない場合は”n”を入力しEnterを押下します。
6.”Y”を入力した場合、使用可能なゾーンの一覧が表示されます。
使用するゾーンの番号を入力しEnterを押下します。
7.これで初期セットアップは完了です。
サービスアカウントの作成
サービスアカウントを作成します。
今回作成するサービスアカウントにはアクセス権限として、Storage オブジェクト ユーザを付与しています。
1.IAMにアクセスします。
2.左ペインからサービスアカウントをクリックします。
3.サービスアカウントを作成をクリックします。
4.サービスアカウントの作成画面が表示されます。
今回は以下の通りにサービスアカウントを作成しました。
サービスアカウント名、ID、説明を入力し、作成して続行をクリックします。
5.サービスアカウントにアクセス権限を付与します。
付与したいロールを選択し完了ボタンをクリックします。
サービスアカウントキーのダウンロード
Google Cloud CLIに対してサービスアカウントを認証させる際に、使用するサービスアカウントキーをダウンロードします。
1.作成したサービスアカウントをクリックします。
2.キータブを開きます。
鍵を追加をクリックし、新しい鍵を作成をクリックします。
3.キーのタイプを選択し作成をクリックします。
今回はJSONを選択しました。
4.キーファイルがPCに自動的にダウンロードされます。
こちらのファイルは不正使用されないよう安全に保存してください。
サービスアカウントの認証
Google Cloud CLIに対して、サービスアカウントを認証します。
Google Cloud SDK Shellを起動し、以下のコマンドをご自身の環境に合わせ修正し、実行します。
gcloud auth activate-service-account [サービスアカウントのメールアドレス] --key-file [JSONファイルパス\ファイル名.json] --project [プロジェクト名]
追加されたことを確認するには、以下のコマンドを実行します。
gcloud config configurations list
個人アカウント、サービスアカウントのどちらがアクティブになっているか、接続プロジェクト名など確認することができます。
各サービスを利用してみた
まずはアクセス権限が付与されているCloud Storageへアップロードを行います。
test.csvを作成し、以下のコマンドを実行します。
gsutil cp [ファイル名] gs:[バケット名]
ファイルのアップロードに成功しました。
次に、アクセス権限が付与されていないBigQueryへアクセスした場合、エラーが表示されるか試してみます。
テーブルの内容を検索するコマンドを実行しましたが、Access Deniedとエラーが表示され、検索することができませんでした。
まとめ
Google Cloud CLIより定期的にファイルをアップロードする際などは、必要以外の場所・サービスを使用しないようにするため、セキュリティの観点からもサービスアカウントを使用した方が良いと思います。
但しサービスアカウントキーに関しては、不正使用されるとセキュリティ上のリスクとなる可能性があります。
代わりとしてアナウンスされている、Workload Identity連携に関しても調べてみようと思います。
Google および Google Cloud Platform™ service は Google LLC の商標であり、この記事は Google によって承認されたり、Google と提携したりするものではありません。
コメント