Asset

アセットを一意に識別します。

デジタル アセットとは、識別可能でアドレス指定可能なオンライン エンティティで、通常はなんらかのサービスやコンテンツを提供します。アセットの例としては、ウェブサイト、Android アプリ、Twitter フィード、Plus ページなどがあります。

JSON 表現
{
  // Union field, only one of the following:
  "web": {
    object(WebAsset)
  },
  "androidApp": {
    object(AndroidAppAsset)
  },
}
フィールド名 タイプ 説明
Union フィールド。次のいずれかのみを指定できます。
web object(WebAsset) ウェブアセットかどうかを設定します。
androidApp object(AndroidAppAsset) Android アプリアセットの場合に設定されます。

WebAsset

ウェブアセットを表します。

JSON 表現
{
  "site": string,
}
フィールド名 タイプ 説明
site string

ウェブアセットは、スキーム、ホスト名、ポート部分のみを含む URL で識別されます。形式は

http[s]://<hostname>[:<port>]

ホスト名は完全修飾する必要があります。末尾は 1 つのピリオド(「.」)にする必要があります。

現在のところ、「http」と「https」のスキームのみを使用できます。

ポート番号は 10 進数で示されます。標準のポート番号を使用する場合は省略する必要があります(HTTP の場合は 80、HTTPS の場合は 443)。

この制限付き URL を「サイト」と呼びます。同じスキーム、ホスト名、ポートを共有する URL はすべて、サイトの一部と見なされるため、ウェブアセットに属します。

例: サイト https://www.google.com のアセットに次の URL がすべて含まれているとします。

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com/

次の URL は含まれていません。

  • http://www.google.com/(スキームが間違っています)
  • https://google.com/(ホスト名が一致しません)
  • https://www.google.com:444/(ポートが一致しない)必須

AndroidAppAsset

Android アプリアセットを表します。

JSON 表現
{
  "packageName": string,
  "certificate": {
    object(CertificateInfo)
  },
}
フィールド名 タイプ 説明
packageName string Android アプリアセットは、Java パッケージ名で識別されます。たとえば、Google マップ アプリでは、パッケージ名 com.google.android.apps.maps が使用されます。REQUIRED
certificate object(CertificateInfo)

パッケージ名の一意性にはグローバルな適用がなされていないため、署名証明書も必要です。署名証明書は、パッケージ名と組み合わせればアプリを一意に識別できます。

一部のアプリでは署名鍵がローテーションされているため、時間の経過とともに異なる鍵で署名される可能性があります。(パッケージ名、証明書)を一意の ID として使用するため、これらは個別のアセットとして扱われます。どちらのバージョンのアプリでも、同じまたは似たような記述をするので、通常は問題になりません。ただし、アプリに関するステートメントを作成する他のアセットは、キーがローテーションされたときに更新する必要があります。

(ステートメントを公開およびクエリするための構文には糖衣構文が含まれているため、複数の証明書で認識されるアプリを簡単に指定できます)。REQUIRED

CertificateInfo

X509 証明書を表します。

JSON 表現
{
  "sha256Fingerprint": string,
}
フィールド名 タイプ 説明
sha256Fingerprint string

証明書の大文字の SHA-265 フィンガープリント。PEM 証明書から、次のようにして取得できます。

$ keytool -printcert -file $CERTFILE | grep SHA256:
SHA256: 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83: \
    42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

または次のような形式にします。

$ openssl x509 -in $CERTFILE -noout -fingerprint -sha256
SHA256 Fingerprint=14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64: \
    16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

この例では、このフィールドの内容は 14:6D:E9:83:C5:73: 06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF: 44:E5 になります。

これらのツールを使用できない場合は、PEM 証明書を DER 形式に変換し、その文字列の SHA-256 ハッシュを計算して、結果を 16 進文字列(各オクテットの大文字の 16 進数表現をコロンで区切ったもの)として表すことができます。