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

API キー セキュリティ

API キーのセキュリティを確保するための基本戦略を学びましょう。ユーザーデータの保護とアプリストアのガイドラインへの準拠を目指すには、API キーの保存、輸送、管理について学びましょう。

マーティン・ドナディュー

マーティン・ドナディュー

コンテンツマーケター

API キー セキュリティ

__CAPGO_KEEP_0__ キーの安全性を確保することは、ユーザーデータの保護とアプリストアの規則の遵守に不可欠です。 API キーを公開すると、データ漏洩、サービス乱用、またはアカウントの不正利用につながる可能性があります。 Keeping your __CAPGO_KEEP_0__ keys secure is critical for protecting user data and meeting app store rules. Exposing keys can lead to data breaches, service abuse, and account compromise.

Key Takeaways:

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

By implementing these practices, you can safeguard your app, comply with Apple and Google guidelines, and protect your users.

Secure API Key Storage Methods

Remove API Keys from Source Code

Including API keys directly in source code can lead to exposure through decompilation or repository leaks. To avoid this, consider these approaches:

  • Use environment variables for local development.
  • Store keys in secure configuration files that are excluded from version control.
  • Rely on remote configuration services キーを管理する。

iOSの場合、 XCConfigファイル コードベースから設定を分離することを検討してください。 Androidの場合、 gradle.properties:

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

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

プラットフォームセキュリティツール

キーをAPIとして保存する際にセキュリティを強化するには、プラットフォーム固有のツールを活用してください。

iOSの場合、 キーチェーンサービス セキュアなストレージのために使用してください:

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)

Androidの場合、 暗号化された共有プレファレンス セキュアなキー ストレージのために活用してください:

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キーを使用します。各環境には、

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

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

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

APIキー送信セキュリティ

APIキーを送信する際に保護することは、ユーザーデータを保護し、アプリストアの要件を満たすために不可欠です。強力な送信セキュリティ対策は、第三者攻撃や不正アクセスを防ぐのに役立ちます。

HTTPS実装

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

Node.jsの「Express」アプリケーションでHTTPSを強制する基本的な例です: iOS上で証明書固定を実装するには iOS上で証明書固定を実装するには、以下の例のようにします。

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

アプリケーションレベルで__CAPGO_KEEP_0__キーを暗号化することで、運輸を含む追加の保護を実現できます。

証明書固定

証明書固定は、サーバーの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)
        }
    }
}

In addition to securing transport, encrypt API keys at the application level.

API Key Encryption

APIキーの暗号化 Capgoキーの暗号化は、さらにセキュリティの層を追加します。Capgoは、例えば、アプリの更新に端末間の暗号化を使用しています。

「真の端末間暗号化を実現する唯一の解決策、他のものは更新を署名するだけ」 - 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キーの使用状況を追跡することは、異常な活動を発見するために不可欠です。リアルタイムの分析を使用して、以下の内容を監視してください。

  • リクエストのパターンとボリューム
  • アクセスの地理的位置
  • エラー率と種類
  • __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_1__

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

  • __CAPGO_KEEP_2__ 緊急回転:
  • 侵害の疑いがある場合、キーを即時無効化します。 __CAPGO_KEEP_3__
  • 定期回転: 定期的にプロダクションキーを更新します。

__CAPGO_KEEP_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百万回以上のセキュアな更新を成功的に配信しました。 セキュアな更新 750のプロダクションアプリに23.5百万回以上のセキュアな更新を配信しました。 [1]end-to-end暗号化 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;
    }
};

この設計は、API キーだけでなく、App Store の要件への準拠を簡素化することにも役立ちます。

App Store のガイドラインへの準拠

Capgo は、82% のグローバル成功率を達成し、95% のアクティブユーザーが 24 時間以内にアップデートを受け取ることを保証するなど、迅速かつ安全なアップデートを提供します。 [1]潜在的な脆弱性を対処するための機能を提供します。

  • アプリストアのポリシーに沿った自動キー回転
  • 環境ごとにカスタマイズされたデプロイメント制御
  • アップデートの管理に細かい粒度の許可

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
セキュリティ機能 実装
鍵暗号化 ビルドおよびデプロイ時、端末間の暗号化
アクセス制御 デプロイトリガーのロールベースパーミッション
監査ログ すべてのデプロイアクティビティの詳細なログ
バージョン管理 デプロイされた更新の安全な追跡

“End-to-end encryption. Only your users can decrypt your updates, no one else.” [1] - Capgo

- __CAPGO_KEEP_0__

Keeping API keys secure is crucial for meeting app store requirements and safeguarding user data. Here’s a quick overview of key practices and what to do next.

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

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

セキュリティ対策 実装要件 法的影響
データストレージのセキュリティ エンドツーエンド暗号化と環境分離を使用する Apple/Googleのデータ保護規則に準拠
トランスポート層 HTTPSを強制し、SSL証明書ピンニングを使用する データの送信中のセキュリティ
アクセス制御 ロールベースの権限を適用し、ログを追跡する アクセスログ 非承認アクセスをブロックする
キー管理 __CAPGO_KEEP_0__ キーを自動的にローテートし、環境固有のキーを使用する 強力な、継続的なセキュリティを維持する

API キーのセキュリティを確保するためのチェックリストを参照する

次のステップ

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

    code のソースコードの漏洩や暗号化の脆弱性を特に検証する

  2. セキュリティ対策を実装する

    リスクを軽減し、アプリストアの要件を満たすために、端末間の暗号化を適用する

  3. 監視システムを確立する

    自動警報を設定し、定期的な監査を実施して、継続的なセキュリティを確保する

“App Store compliant” - Capgo [1]

Keep going from API Key Security for App Store Compliance

If you are using API Key Security for App Store Compliance to plan security and compliance, connect it with Encryption for the implementation detail in Encryption, Compliance for the implementation detail in Compliance, Capgo Security Scanner 製品ワークフローにおけるCapgo セキュリティ スキャナーの Capgo セキュリティ 製品ワークフローにおけるCapgo セキュリティ、そして Capgo トラスト センター 製品ワークフローにおけるCapgo トラスト センター。

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

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

今すぐ始めましょう

最新のブログ記事

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