Google Cloud コンソールで、サービスアカウントページに移動します。
GCP サービスにアクセスするには、Google Cloud コンソールを使用してサービスアカウントを作成します(別の方法として、gcloud CLI、REST 呼び出しまたはプログラムを使用することもできます)。このようなアカウントは、Google Cloud の ID およびアクセス管理(IAM)で管理されます。IAM を使用すると、特定の Google Cloud リソースへのきめ細かなアクセスをサービスアカウントに付与することができます。例えば、選ばれたプリンシパル(ユーザーサービスアカウント)に適用できる特定のアクセス権を持つ役割を定義して、PubSub トピックや Storage バケットなどの特定のリソースへのアクセスを許可または制限することができます。
様々な種類のサービスアカウントの概要については、https://cloud.google.com/iam/docs/service-account-overview の Google 記事を参照してください。
サービスアカウントキーファイルを作成するには、次の手順に従います。
-
-
プロジェクトを選択します。
-
キーの作成対象となるサービスアカウントの電子メールアドレスをクリックします。
-
「キーの追加」ドロップダウンメニューをクリックして、「新しいキーを作成」を選択します。
-
「キータイプ」として「JSON」を選択し、「作成」をクリックして、サービスアカウントキーファイルをダウンロードします。
ダウンロードされたファイルは、次のような形式になっています。
{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url":"https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL" }
このファイルが安全に格納されていることを確認してください。詳しくは、https://cloud.google.com/iam/docs/service-accounts-create を参照してください。
アクセス資格情報を含んだ JSON ファイルを CFML コードで使用して、GCP サービスに対する認証を行うことができます。
<cfscript> pubsubSvc = getCloudService( { "vendorName" = "GCP", "credentialJSONFilePath" = expandPath('./credentials.json') }, { "serviceName" = "pubsub" } ) </cfscript>
資格情報構造体が 資格情報の JSON ファイルに含まれていない場合は、プロジェクト ID を資格情報構造体に渡すことができます。
<cfscript> pubsubSvc = getCloudService( { vendorName = "GCP", credentialJSONFilePath = expandPath('./credentials.json'), projectID = "<yourProjectID>" }, { "serviceName" = "pubsub" } ) </cfscript>
環境変数へのデフォルト資格情報の設定
また、下記のシステムプロパティを設定することで、環境変数にデフォルトのアプリケーション資格情報を設定することもできます。それによって、getCloudService メソッドの呼び出しで同じものを渡す必要がなくなります。このアプローチでは、アプリケーションへの資格情報の埋め込みを避けることができます。
GOOGLE_APPLICATION_CREDENTIALS=path/to/your/service_accont_key_file.json
<cfscript> writeOutput(server.system.environment.GOOGLE_APPLICATION_CREDENTIALS) gcpPSCred = { "vendorName" = "GCP" } gcpPSConfig = { "serviceName" = "pubsub" } pubsubSvc = getCloudService(gcpPSCred, gcpPSConfig) </cfscript>
詳しくは、https://cloud.google.com/docs/authentication/application-default-credentials#GAC を参照してください。
ColdFusion Administrator で定義したクラウド資格情報またはクラウド設定サービスエイリアスを使用するには、次の方法でクラウドサービスクライアントオブジェクトを作成します。
<cfscript> pubsubSvc = getCloudService("GCPCloudCredentialsAlias", "GCPCloudServiceConfigAlias") </cfscript>