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>