メインコンテンツにスキップ

API キー セキュリティ アプリ ストアの規制に適合する

アプリ ストアの規制に適合するためにユーザー データを保護するために必要な API キーのセキュリティ戦略を学びましょう。ストレージ、トランスポート、管理を含みます。

マーティン ドナディュー

マーティン ドナディュー

コンテンツマーケター

APIのキー

__CAPGO_KEEP_0__のキーを APIのキーを アプリストアの規則に準拠したユーザーデータ保護のために キーを公開すると、データ漏洩、サービス乱用、またはアカウントの不正利用につながる可能性があります。

主なポイント:

  • キーをcodeに保存しないようにする環境変数または暗号化されたファイルを使用する
  • プラットフォームツールを使用するiOSのKeychainとAndroidのEncryptedSharedPreferencesを使用する EncryptedSharedPreferencesを使用する.
  • 暗号化 API キー: AES-256 暗号化を使用して追加のセキュリティ層を追加します。
  • 安全なトランスポート: 常に HTTPS を使用し、SSL 証明書ピニングを検討してください。
  • キーを監視して回転: 定期的にキーを回転し、異常を検出するために使用を追跡してください。

これらの慣行を実装することで、Appを保護し、AppleおよびGoogleのガイドラインに準拠し、ユーザーの保護が可能になります。

安全な API キー ストレージ メソッド

ソース Code から API キーを削除

ソース code に API キーを直接含めることは、脱構築またはリポジトリの漏洩を通じて露出につながる可能性があります。このようなリスクを回避するために、以下のアプローチを検討してください。

  • 使用 環境変数 local開発用に.
  • 秘密鍵を バージョン管理から除外された セキュアな設定ファイルに格納する.
  • リモートの設定サービスに依存して 鍵を管理する. iOSの場合、

XCConfigファイルを使用して コードベースから設定を分離する。Androidの場合、 Platform Security Toolsを使用して鍵を管理する。 gradle.properties:

# Store in ~/.gradle/gradle.properties
API_KEY=your_key_here

# Reference in build.gradle
buildConfigField "String", "API_KEY", "\"${project.API_KEY}\""

プラットフォーム固有のツールを利用して、__CAPGO_KEEP_0__鍵のセキュリティを向上させる。.

プラットフォーム固有のツールを利用して、API鍵のセキュリティを向上させる。.

On iOS, __CAPGO_KEEP_0__を使用します。 Keychain Servicesを使用して安全なデータストレージを実現します。 Android用には、環境固有のキーを安全に保存するために

let query: [String: Any] = [
    kSecClass as String: kSecClassGenericPassword,
    kSecAttrAccount as String: "APIKey",
    kSecValueData as String: apiKey.data(using: .utf8)!
]
let status = SecItemAdd(query as CFDictionary, nil)

EncryptedSharedPreferencesを使用します。 環境を区別するためのキー 開発、ステージング、および生産環境用に異なる__CAPGO_KEEP_0__キーを使用します。各環境には

val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val sharedPreferences = EncryptedSharedPreferences.create(
    context,
    "secret_shared_prefs",
    masterKey,
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

環境固有のキー回転スケジュール

Use different API keys for development, staging, and production environments. Each environment should have:

  • 厳格なアクセス制御
  • 環境固有のキーを保存する
  • __CAPGO_KEEP_0__

__CAPGO_KEEP_0__ CI/CD変数のセキュリティ 設定ファイルの代わりに使用します。これにより、キーは保護されながら自動ビルドプロセスをサポートできます。さらに、キーが送信される際に保護されるように、安全なトランスポートメカニズムを確保する必要があります。

高度なモバイルiOSセキュリティ – ランタイム攻撃とAPIキー…

APIキー送信セキュリティ

トランジット中のAPIキーを保護することは、ユーザーデータの保護とアプリストアの要件の遵守に不可欠です。強力な送信セキュリティ対策は、攻撃や不正アクセスを防ぐのに役立ちます。

HTTPS実装

API通信をセキュリティで保護するには、常にHTTPトラフィックをHTTPSにリダイレクトしてください。TLS 1.3またはそれ以降を使用し、信頼できる証明機関からSSL証明書を取得してください。

Node.jsの例 Expressアプリケーション: セキュリティの追加層として、証明書ピンニングを実装することを検討してください。

const express = require('express');
const app = express();

// Redirect HTTP to HTTPS
app.use((req, res, next) => {
    if (!req.secure) {
        return res.redirect('https://' + req.headers.host + req.url);
    }
    next();
});

セキュアなCI/CD変数の代わりに設定ファイルを使用します。キーは保護されながら自動ビルドプロセスをサポートできます。さらに、キーが送信される際に保護されるように、安全なトランスポートメカニズムを確保する必要があります。

SSL証明書ピンニング

証明書ピンニングは、サーバーのSSL証明書が信頼されたコピーと一致することを確認し、偽の証明書の使用を防止します。

iOSでは、証明書ピンニングを使用して URLSession例えば、以下のようになります。

class APIManager: NSObject, URLSessionDelegate {
    func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
        guard let serverTrust = challenge.protectionSpace.serverTrust,
              let certificate = SecTrustGetCertificateAtIndex(serverTrust, 0) else {
            completionHandler(.cancelAuthenticationChallenge, nil)
            return
        }

        // Compare certificate with pinned certificate
        if validateCertificate(certificate) {
            completionHandler(.useCredential, URLCredential(trust: serverTrust))
        } else {
            completionHandler(.cancelAuthenticationChallenge, nil)
        }
    }
}

トランスポートのセキュリティだけでなく、API キーをアプリケーションレベルで暗号化することも必要です。

API キー暗号化

API キーを暗号化する さらにセキュリティの層を追加します。Capgo、たとえば、App Updatesのエンドツーヘンド暗号化を使用します。

“完全なエンドツーヘンド暗号化の唯一の解決策、他のものはアップデートを署名するだけ” - Capgo [1]

API キーを暗号化するには、信頼できる暗号化アルゴリズムを使用してください。Node.jsでAES-256-GCMを使用してAPI キーを暗号化する例は以下のようになります。

const crypto = require('crypto');

function encryptAPIKey(apiKey, encryptionKey) {
    const iv = crypto.randomBytes(16);
    const cipher = crypto.createCipheriv('aes-256-gcm', encryptionKey, iv);

    let encrypted = cipher.update(apiKey, 'utf8', 'hex');
    encrypted += cipher.final('hex');

    return {
        encrypted: encrypted,
        iv: iv.toString('hex'),
        tag: cipher.getAuthTag().toString('hex')
    };
}

HTTPS、証明書ピンニング、暗号化を組み合わせると、API キーの強力な防御を確保できます。

API キー管理

API キーの管理は、使用状況を監視し、定期的にローテーションし、厳格なアクセス制御を実施することです。これらの手順は、敏感なデータを保護し、アプリストアの要件に準拠することを保証します。

使用状況の監視

API キーの使用状況を追跡することは、異常な活動を発見するために不可欠です。リアルタイムの分析を使用して、以下を監視してください。

  • リクエストのパターンとボリューム
  • アクセスの地理的位置
  • エラー率と種類
  • 認証失敗

Node.js の例

const apiMetrics = {
    trackRequest: (apiKey, endpoint) => {
        // Log request details
        const requestData = {
            timestamp: new Date().toISOString(),
            endpoint,
            apiKey: hashKey(apiKey),
            geoLocation: getRequestLocation(),
            responseTime: calculateResponseTime()
        };

        // Alert on suspicious patterns
        if (isAnomalous(requestData)) {
            notifySecurityTeam(requestData);
        }
    }
};

キーローテーション スケジュール

使用状況を把握したら、定期的にキーをローテーションすることを確認してください。自動化されたローテーションプロセスは、アプリストアの要件に準拠することを保証できます。以下のローテーション戦略があります。

  • 緊急ローテーション 侵害の疑いがある場合、キーを即座に無効化してください。
  • __CAPGO_KEEP_0__ quarterに更新する
  • __CAPGO_KEEP_0__ 月にテスト環境のキーを更新する

キー変更の際に、最小限の影響を与えるために、移行期間を使用することが推奨されます:

const keyRotation = {
    oldKey: process.env.OLD_API_KEY,
    newKey: process.env.NEW_API_KEY,
    transitionPeriod: 7 * 24 * 60 * 60 * 1000, // 7 days
    startDate: new Date()
};

アクセス制御設定

アクセス制御を厳格に実施するには、監視とローテーションだけでは十分ではない。必要な権限に基づいてパーミッションを割り当て、最小限の特権原則に従う必要があります:

const accessControl = {
    validateAccess: (apiKey, requestedOperation) => {
        const keyPermissions = getKeyPermissions(apiKey);
        const environmentType = getCurrentEnvironment();

        return isOperationAllowed(keyPermissions, requestedOperation, environmentType);
    }
};

アクセス権を持つユーザーを定期的にレビューし、必要に応じてパーミッションを調整し、異常な活動に対する自動アラートを設定することで、強固なセキュリティを維持しながら、アプリストアの規制に準拠することができます。

Capgo __CAPGO_KEEP_0__ Live Update ダッシュボード インターフェース

Capgoは、セキュアなストレージとトランスポート方法を組み合わせた、プラットフォームに組み込まれた高度な機能によって、モバイルアプリのセキュリティを強化します。']}

Capgo strengthens app security by combining secure storage and transport methods with advanced features built into its platform.

Capgo セキュリティアーキテクチャ

Capgo’s システムは、23.5百万回以上のセキュアなアップデートを750の実稼働アプリに成功で配信 セキュアなアップデート 750の実稼働アプリに [1]. これは エンドツーエンド暗号化、認可されたユーザーしかアップデートを復号できないようにする

const capgoSecurity = {
    encryptionType: 'end-to-end',
    keyStorage: {
        separate: true,
        encrypted: true,
        environment: process.env.NODE_ENV
    },
    updateVerification: async (update) => {
        const isValid = await verifySignature(update);
        const isAuthorized = await checkUserPermissions(update.userId);
        return isValid && isAuthorized;
    }
};

This design not only safeguards API keys but also simplifies compliance with app store requirements.

この設計は、__CAPGO_KEEP_0__ キーだけでなく、ストアの要件に準拠したコンプライアンスを簡素化する

Capgo ensures updates are delivered quickly and securely, achieving an 82% global success rate, with 95% of active users receiving updates within 24 hours [1]__CAPGO_KEEP_0__ は、迅速かつ安全にアップデートを配信し、82%のグローバル成功率を達成し、24時間以内にアクティブユーザー95%がアップデートを受け取る

  • 、潜在的な脆弱性を対処する機能を提供します:「自動キーローテーションはアプリストアのポリシーと同期されます」
  • 環境に合わせたデプロイ制御
  • アップデートの管理に特化した細かい権限

CI/CD セキュリティ統合

CapgoはCI/CD プラットフォームと組み合わせてAPIの鍵保護を強化します。 ここでは、その統合の例を示します。

capgo_deployment:
    environment:
        - CAPGO_API_KEY: ${SECURED_API_KEY}
        - APP_ENV: production
    security:
        - signature_verification: true
        - key_rotation: enabled
        - access_control: role_based
セキュリティ機能実装
鍵暗号化ビルドとデプロイの全体的な暗号化
アクセス制御デプロイトリガーのロールベースの権限
監査ログすべてのデプロイアクティビティの包括的なログ
バージョン管理展開された更新の安全な追跡

「エンドツーエンド暗号化。ユーザーのみが更新を復号できます。誰もそれを知りません。」 [1] - Capgo

概要

API キーの安全性を確保することは、アプリストアの要件を満たすこととユーザーデータを保護することの重要なステップです。ここでは、重要な実践と次のステップについて簡単に説明します。

セキュリティチェックリスト

以下の表は、AppleとGoogleの標準に沿ったAPIキーの保護の重要なステップを強調しています。

セキュリティ対策実装要件適合性の影響
ストレージセキュリティ__CAPGO_KEEP_0__をエンドツーエンドで暗号化し、環境を分離する__CAPGO_KEEP_0__はApple/Googleのデータ保護規則と一致する
Transport LayerHTTPSを強制し、SSL証明書ピンニングを使用するデータの送信中のセキュリティを確保する
Access Controlロールベースのパーミッションを適用し、ログを追跡する 未承認のアクセスをブロックするKey Management
キーを自動的にローテートし、環境固有のキーを使用する強力な、継続的なセキュリティを維持する__CAPGO_KEEP_0__

このチェックリストを参照して、API キーのセキュリティを確保するためのガイドとして使用してください。

次のステップ

  1. 現在の実装を調査して、特に暗号化とソース __CAPGO_KEEP_0__ の露出を含む、キーストアとトランスポート方法の脆弱性を確認してください。

    Review your existing key storage and transport methods for vulnerabilities, especially focusing on encryption and source code exposure.

  2. リスクを軽減し、アプリストアの要件を満たすために、端末間の暗号化を適用してください。

    監視システムの設置

  3. 自動的な警告を設定し、定期的な調査を実施して、セキュリティが継続して保たれるようにしてください。

    Set up automated alerts and conduct regular audits to ensure continued security.

アプリストアの要件を満たすための Capgo キーのセキュリティ [1]

API キーのセキュリティを通じてアプリストアの要件を満たすための続き

あなたが使用している API キーのセキュリティを通じてアプリストアの要件を満たすための セキュリティとコンプライアンスの計画に役立つように 暗号化 暗号化の実装詳細について コンプライアンス コンプライアンスの実装詳細について Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフローについて Capgo セキュリティ Capgo セキュリティの製品ワークフローについて Capgo トラスト センター Capgo トラスト センターの製品ワークフローについて

Capacitor アプリのリアルタイム更新

ウェブ層のバグが生じた場合、Capgoを使用して修正を配信し、App Storeの承認待ちの日数を省略します。ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路を通じます。

今すぐ始めましょう

ブログの最新記事

Capgoは、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。