アンチパターン: OAuth トークンに有効期限を設定しない

<ph type="x-smartling-placeholder"></ph> 現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント
詳細

Apigee Edge は、以下を行うための OAuth 2.0 フレームワークを提供します。 安全な API を提供します。OAuth2 は、オープン標準でトークンベースの認証と認可のスキームの中で最も普及しているものの一つです。これにより、ユーザーにユーザー名とパスワードの提供を要求しなくても、クライアント アプリケーションがユーザーに代わって API にアクセスできるようになります。

Apigee Edge では、開発者がアクセス トークンや更新トークンを生成するには、 権限付与タイプがあります。 クライアント認証情報 password、 暗黙的な 認証コード - OAuthv2 ポリシーを使用します。 クライアント アプリケーションはアクセス トークンを使用して、安全な API を使用します。アクセス トークンごとに固有の有効期限がある 時間。OAuthv2 ポリシーで設定できます。

一部の権限付与タイプのアクセス トークンとともに、更新トークンもオプションで発行されます。更新トークンは、元のアクセス トークンの有効期限が切れた場合、または取り消された場合に、新しい有効なアクセス トークンを取得する目的で使用されます。更新トークンの有効期限も OAuthv2 ポリシーで設定できます。

このアンチパターンは Google Cloud の 長い有効期限の設定 使用します

アンチパターン

OAuthv2 ポリシーで更新トークンの有効期限を設定しない これにより、OAuth トークンが蓄積され、Cassandra ノード上で使用されるディスク スペースが増加します。

次の OAuthV2 ポリシーの例は、サービス アカウントに対する <RefreshTokenExpiresIn>:

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <!--<RefreshTokenExpiresIn> is missing -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

上記の例では、次のようになります。

  • アクセス トークンには、30 分という適度に短い有効期限が設定されています。
  • 更新トークンの有効期限が設定されていません。
  • 更新トークンはデータストア(Cassandra)に永久に保持されるため、 累積します
  • 有効期限なしで作成された更新トークンは、アクセス トークンを生成するために無期限に使用できます。
  • この API へのトラフィックが 1 秒あたり 10 リクエストの場合、最大 864,000 個のトークンが生成される可能性があります。 1 日で達成できます

影響

  • 更新トークンが有効期限なしで作成された場合、主な結果は次の 2 つです。 <ph type="x-smartling-placeholder">
      </ph>
    • 更新トークンは、アクセス権を取得するために、今後何年にもわたって使用できる あります。これはセキュリティ上の影響をもたらす可能性があります。
    • 更新トークンを含む Cassandra の行は削除されません。 これにより、Cassandra にデータが蓄積されます。
  • 更新トークンを使用しない場合 代わりに新しい更新トークンとアクセス トークンを作成します。 古い更新トークンが Cassandra に残ります。そのため、 トークンが Cassandra に蓄積され、肥大化 ディスク使用量の増加、コンパクションの負荷の増加、 レイテンシを短縮できます。

ベスト プラクティス

更新トークンとアクセス トークンの両方に、適切な短い有効期限を使用します。詳しくは、 ベスト プラクティス 有効期限を設定するために 更新トークンとアクセストークンの 回数を制限できます必ず、両方のアクセスに有効期限の構成を指定してください 更新トークンも指定できます。詳しくは、 OauthV2 ポリシーのドキュメント をご覧ください。

Edge for Private Cloud のお客様向けのベスト プラクティス

このセクションでは、Edge for Private Cloud のお客様向けのベスト プラクティスについて説明します。

デフォルトの更新トークンの有効期限を指定する

デフォルトでは、ポリシー構成で更新トークンの有効期限が指定されていない場合、 Edge は有効期限のない更新トークンを作成します。この動作をオーバーライドするには、 次の操作を行います。

  1. Message Processor ノードで、構成オーバーライド ファイルを編集または作成する $APIGEE_ROOT/customer/application/message-processor.properties。このファイルが apigee ユーザーが読み取ることができます。
  2. 次の行をファイルに追加します。
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
    これにより、ポリシーで更新トークンが指定されていない場合、デフォルトの更新トークンの有効期限が 1 時間に設定されます。 このデフォルト値は、ビジネスニーズに応じて変更できます。
  3. Message Processor サービスを再起動します。
    apigee-service edge-message-processor restart
  4. すべての Message Processor ノードで 1 つずつ上記の手順を繰り返します。
で確認できます。 で確認できます。

Cassandra のベスト プラクティス

一般公開されている Apigee の最新バージョンにアップグレードしてみてください。Apigee が継続 管理の改善と最適化を継続的に行うため、修正や機能強化をリリースできます。 管理することもできます。Apigee では、アクセス トークンと更新トークンは Cassandra に保存されます。 「kms」キースペース内のみとなります。これの圧縮戦略では、 キースペースが LeveledCompactionStrategy に設定されている。 次のインデックスが存在しないことを確認する必要があります。 <ph type="x-smartling-placeholder">
    </ph>
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx#f0f0f0
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx

また、 テーブル kms.oauth_20_access_tokensgc_grace_seconds デフォルトの 10 日間から 値(3 日など)を設定して、トークンの削除によって生成される tombstone が、 データストアから高速にパージされることです

関連情報