メインコンテンツにジャンプ

API キー セキュリティ for App Store 合格

アプリのセキュリティを確保し、ユーザーデータを保護し、アプリストアのガイドラインに準拠するために、API キーをセキュリティで保護するための基本的な戦略を学びます。

Martin Donadieu

Martin Donadieu

コンテンツマーケター

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

__CAPGO_KEEP_0__ キーを API keys キーを公開すると、データ漏洩、サービス乱用、またはアカウントの侵害につながる可能性があります。 主なポイント:

__CAPGO_KEEP_0__ 内にキーを保存しないようにする

  • Avoid storing keys in codeプラットフォーム ツールを使用する
  • : iOS Keychain と AndroidEncryptedSharedPreferences EncryptedSharedPreferences.
  • API の暗号化: AES-256 暗号化を使用して追加のセキュリティ層を追加します。
  • 安全なトランスポート: 常に HTTPS を使用し、SSL 証明書ピンニングを検討してください。
  • 鍵の監視とローテーション: 定期的に鍵をローテーションし、異常を追跡してください。

これらの実践を実装することで、モバイルアプリを保護し、Apple と Google のガイドラインに準拠し、ユーザーの保護が可能になります。

API の安全な鍵ストレージ方法

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

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

  • 使用 環境変数 for local development.
  • Store keys in secure configuration files がバージョン管理から除外された
  • Rely on remote configuration services to manage keys.

iOSの場合、 XCConfig files を使用して、コードベースから分離された設定を管理する。Androidの場合、 gradle.properties:

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

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

Platform Security Tools

を使用してキーを管理する。プラットフォーム固有のツールを使用して、API キーの安全性を向上させることができます。

iOSでは 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)

Androidでは 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 キー転送セキュリティ

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

HTTPS実装

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

Node.jsのExpressアプリケーションにおけるHTTPSの基本的な例です: HTTPSを強制するために、追加の保護層として証明書ピンニングを実装することを検討してください。 HTTPSを強制するために、追加の保護層として証明書ピンニングを実装することを検討してください。

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

HTTPSを強制するために、追加の保護層として証明書ピンニングを実装することを検討してください。

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 などは、例えばアプリケーションアップデートのエンドツーヨーエンド暗号化を使用しています。

「完全なエンドツーヨーエンド暗号化の唯一の解決策、他のものはアップデートを署名するだけ」 - 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__

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 ライブアップデートダッシュボードインターフェース

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

  • その機能は、潜在的な脆弱性を対処するのに役立ちます:「自動キー回転はアプリストアのポリシーと同期されます」
  • __CAPGO_KEEP_0__の環境に合わせたデプロイ制御
  • __CAPGO_KEEP_0__の更新管理に細かい権限

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

概要

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

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

API キーの保護を実施しながら、Apple と Google の基準に沿った重要なステップを下の表に示します。

セキュリティ対策実装要件適合性への影響
ストレージセキュリティ__CAPGO_KEEP_0__Apple/Googleのデータ保護規則に準拠
Transport LayerHTTPSを強制し、SSL証明書ピニングを使用データの送信中のセキュリティ
アクセス制御ロールベースのパーミッションを適用し、ログを追跡 未承認のアクセスをブロック鍵管理
鍵を自動的にローテートし、環境固有の鍵を使用強力な、継続的なセキュリティを維持__CAPGO_KEEP_0__

APIの鍵をセキュアにするためのチェックリストを参照してください。

次のステップ

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

    既存の鍵の保存と輸送方法を検証し、特に暗号化とcodeの公開を含め、脆弱性を特定してください。

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

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

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

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

「アプリストアの要件を満たす」-Capgo [1]

API Key Security for App Store Complianceから続けてください。

__CAPGO_KEEP_0__ Key Security for App Store Complianceを使用している場合 API セキュリティとコンプライアンスの計画に役立つためにつなぎます。 暗号化 __CAPGO_KEEP_0__暗号化の実装詳細について コンプライアンス __CAPGO_KEEP_0__コンプライアンスの実装詳細について Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフローについて Capgo セキュリティ Capgo セキュリティの製品ワークフローについて Capgo トラスト センター Capgo トラスト センターの製品ワークフローについて

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

Capgo を使用して、ウェブ層のバグが生じた場合、ユーザーにバックグラウンドで更新を提供し、ネイティブの変更は通常のレビュー パスに残します。

今すぐ始めましょう

最新のブログ記事

Capgo を使用すると、プロフェッショナルなモバイル アプリを作成するために必要な最良の洞察を得ることができます。