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

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

API キーのセキュリティーを学ぶ

マーティン ドナディュー

マーティン ドナディュー

コンテンツ マーケティング

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

__CAPGO_KEEP_0__ キーを安全に保つ API キー ユーザーデータの保護とアプリストアの規則の遵守は、安全性が重要です。 鍵を公開すると、データ漏洩、サービス乱用、またはアカウントの侵害につながる可能性があります。

重要なポイント:

  • codeに鍵を保存しないようにする: 環境変数または安全なファイルを使用する
  • プラットフォームツールを使用する: iOS KeychainとAndroidのEncryptedSharedPreferences __CAPGO_KEEP_0__鍵を暗号化する.
  • Encrypt API keys安全なトランスポート
  • : HTTPSを常に使用し、SSL証明書ピンニングを検討するUse platform tools for iOS and Android
  • 鍵の監視と回転: 連続して鍵を回転し、使用状況の異常を追跡します。

これらの慣行を実装することで、AppleおよびGoogleのガイドラインに準拠し、ユーザーの保護を実現し、アプリの安全性を確保することができます。

保護されたAPI キー ストレージ メソッド

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

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

  • 環境変数を使用して ローカル開発用に 安全な構成ファイルにキーを保存して
  • バージョン管理から除外します。 Including __CAPGO_KEEP_0__ keys directly in source __CAPGO_KEEP_1__ can lead to exposure through decompilation or repository leaks. To avoid this, consider these approaches:
  • Rely on remote configuration services を管理する。

For iOS, consider using XCConfig files をコードベースから分離する。 gradle.properties:

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

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

On Android, you can manage keys using

Take advantage of platform-specific tools to enhance security when storing API keys.

プラットフォーム固有のツールを利用して、__CAPGO_KEEP_0__ キーのセキュリティを向上させます。 On iOS, use Keychain Services

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 安全なキー格納用:

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
)

環境ごとにキーを分離する

APIの開発、ステージング、および生産環境用に異なるキーを使用する。各環境には:

  • 一意のキー回転スケジュール
  • 使用状況の監視
  • 厳格なアクセス制御

CI/CD変数の安全な環境固有のキーを 構成ファイルではなく、自動ビルドプロセスをサポートするためにキーを保護する キーが送信中保護されるように、安全なトランスポート機構を確実に実装する

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

API キー Transport セキュリティ

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();
});

セキュリティの追加層として、証明書ピンニングを実装することを検討してください。

証明書ピンニング

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

iOS で証明書ピンニングを実装するには、 URLSession__CAPGO_KEEP_0__ の証明書をピンにします。 例えば、

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 キーの暗号化は、さらにセキュリティの層を追加します。Capgo などは、例えば、更新プログラムのエンドツーワンエンド暗号化を使用しています。

“The only solution with true end-to-end encryption, others just sign updates” - Capgo [1]

To encrypt API keys, use reliable encryption algorithms. Below is an example of encrypting an API key with AES-256-GCM in Node.js:

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')
    };
}

Combining HTTPS, certificate pinning, and encryption ensures a strong defense for your API keys.

API

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

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

API キー管理

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

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__

使用量を把握したら、キーを定期的に回転することを確認してください。アプリストアの要件に準拠するために、自動回転プロセスが役立ちます。以下の回転戦略をご覧ください。

  • 緊急回転: 侵害の疑いがある場合、キーを即時無効化します。
  • 定期回転: 定期的にキーを更新します。例えば、4か月ごとに。
  • 開発回転: テスト環境のキーを毎月更新します。

混乱を最小限に抑えるために、重要な変更の際には移行期間を設けることができます:

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 Live Update ダッシュボード インターフェース

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

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

Capgoのシステムは、750のプロダクションアプリに23.5百万回の 安全な更新 を成功裏に配信しました [1]. It uses エンドツーエンド暗号化を使用することで、更新を暗号化するには承認されたユーザーしか暗号化できないようにする。

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__ キーだけでなく、App Store の要件に準拠したコンプライアンスを簡素化することにもなります。

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% のグローバル成功率を達成し、95% のアクティブユーザーが 24 時間以内に更新を受け取ることを保証します。

  • その機能は、潜在的な脆弱性を対処するのに役立ちます。
  • アプリストアのポリシーに基づく自動キー回転
  • 特定の環境に合わせたデプロイメント制御

更新を管理するための細かい権限

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
セキュリティ機能実装
鍵暗号化__CAPGO_KEEP_0__
デプロイのトリガーごとにロールベースのパーミッション監査ログ
すべてのデプロイアクティビティの包括的なログバージョン管理
展開された更新の安全な追跡「エンドツーヘンド暗号化。ユーザーのみがアップデートを復号化できます。誰もいません。」

Capgo [1] Capgo

Summary

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

Security Checklist

APIキーを保護するために重要なステップを、AppleとGoogleの標準に沿ったままにしながら表にまとめました。

Security Measure実装要件適合性の影響
Storage Security__CAPGO_KEEP_0__キーを安全に保管するために、エンドツーエンド暗号化と環境を分離することが必要です。Apple/Googleのデータ保護規則に沿ったものです。
Transport LayerHTTPSを強制し、SSL証明書ピニングを使用する必要があります。データの送信中の保護
アクセス制御__CAPGO_KEEP_0__ ロールベースのパーミッションを適用し、ログを追跡する アクセス ログ未承認のアクセスをブロック
キー管理__CAPGO_KEEP_0__ キーを自動的にローテートし、環境固有のキーを使用する強力な、継続的なセキュリティを維持

API キーのセキュリティを確保するためのチェックリストを参照してください。

次のステップ

  1. 現在の実装を検査する

    既存のキー ストレージとトランスポート メソッドの脆弱性を検討し、特に暗号化とソース code の露出を中心に

  2. Implement Security Measures

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

  3. Establish Monitoring Systems

    自動警告を設定し、定期的な監査を実施して、継続的なセキュリティを確保するために、監視システムを設定してください。

“App Store compliant” - Capgo [1]

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

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

今すぐ始めましょう

最新のブログ記事

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