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

API アプリストア規制への準拠のためのキー セキュリティ

APIキーをセキュアにするための重要な戦略を学びましょう。ユーザーデータを保護し、アプリストアのガイドラインに準拠するために、API キーの保存、輸送、管理について学びます。

API App Store への適合性のための API キー セキュリティ

__CAPGO_KEEP_0__ を安全に保つ API のキー アプリストアの規制に適合するためにユーザーデータを保護するには、__CAPGO_KEEP_0__ キーを安全に保つことが重要です。 キーを公開すると、データ漏洩、サービス乱用、またはアカウントの不正使用につながる可能性があります。

主なポイント:

  • code キーを保存しないようにする: 環境変数または安全なファイルを使用する
  • プラットフォームのツールを使用する: iOS の Keychain と Android の EncryptedSharedPreferences __CAPGO_KEEP_0__ キーを暗号化する.
  • APIAPIキーを安全に管理するためのアプリストアの規制のためのガイド
  • : AES-256暗号化を使用して追加のセキュリティ層を追加します。: HTTPSを常に使用し、SSL証明書ピンニングを検討してください。
  • : キーを定期的にローテートし、異常を検出するために使用を追跡してください。: AppleとGoogleのガイドラインに準拠し、ユーザーの保護を実現するために、以下の手順を実施してください。

: __CAPGO_KEEP_0__キーの安全な保存方法

: APIキーのソース__CAPGO_KEEP_1__から削除

: APIキーのソースCodeに直接含めることは、脱構築またはリポジトリの漏洩を通じて暴露される可能性があります。対処するために、以下のアプローチを検討してください:

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

  • Use : __CAPGO_KEEP_0__キーの暗号化を使用して追加のセキュリティ層を追加します。 : HTTPSを常に使用し、SSL証明書ピンニングを検討してください。
  • アプリストアの規制に適合するためにAPIキーを安全に管理する バージョン管理から除外された安全な構成ファイルにキーを格納する バージョン管理から除外された安全な構成ファイルにキーを格納する
  • 依存する リモートの構成サービスに依存してキーを管理する iOSの場合、XCConfigファイルを使用してコードベースから構成を分離することを検討する

Androidの場合、Platform Security Toolsを使用してキーを管理する プラットフォーム固有のツールを使用して、__CAPGO_KEEP_0__キーを安全に格納する iOSの場合、 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 で使用します。 APIキー 安全なストレージのために:

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変数に保存する APIキーは構成ファイルではなく、自動ビルドプロセスをサポートしながら、キーを保護するために使用される代替手段です。 さらに、キーを保護するために、送信中のキーを保護するための安全なトランスポートメカニズムを確実に実装する必要があります。

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

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

Keeping API keys secure during transit is essential to protect user data and comply with app store requirements. Strong transport security measures help prevent attacks like man-in-the-middle and unauthorized access.

APIキーの通信を保護するには、常にHTTPトラフィックをHTTPSにリダイレクトする必要があります。 TLS 1.3またはそれ以降を使用し、信頼できる証明機関からSSL証明書を取得する必要があります。

To secure API communication, always redirect HTTP traffic to HTTPS. Use TLS 1.3 or later and obtain SSL certificates from a trusted Certificate Authority.

Express アプリケーション: application:

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証明書ピンニング

HTTPS実装

証明書固定化により、サーバーの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 Storeのアップデートに使用されるエンドツーヘンドの暗号化を使用しています。

「完全なエンドツーヘンドの暗号化を実現する唯一のソリューション、他のソリューションはアップデートを署名するだけ」 - 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キーの有効な管理には、使用状況を監視し、定期的にローテーションし、厳格なアクセス制御を実施することが含まれます。これらの手順により、敏感なデータを保護し、App Storeの要件に準拠することができます。

使用状況の監視

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

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

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

  • 緊急ローテーション: キーをローテーションする必要があると疑った場合、キーを即座に無効化してください。
  • 定期ローテーション: アプリのストアへの準拠性を確保するために、APIキーを毎四月に更新する必要があります。
  • 開発環境のローテーション: テスト環境のキーを毎月更新する必要があります。

キー変更の際に、最小限の影響を与えるために、移行期間を使用することをお勧めします。

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のシステムは、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;
    }
};

アプリストアの規制に適合するように、API キーを保護するデザインは、キーだけでなく、規制の適合性を簡素化する。

アプリストアガイドラインへの準拠

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
セキュリティ機能 実装
キー暗号化 ビルドとデプロイの段階でエンドツーエンド暗号化
アクセス制御 デプロイトリガーのロールベースパーミッション
監査ログ すべてのデプロイアクティビティの詳細なログ
バージョン管理 Deployed updatesのセキュアな追跡

“エンドツーエンド暗号化。ユーザーのみがアップデートを復号できます。” [1] - Capgo

概要

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

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

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

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

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

次のステップ

  1. 現在の実装を検査

    既存のキー保存と輸送方法の脆弱性を検討し、特に暗号化とソース code の露出に焦点を当てましょう。

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

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

  3. 監視システムを確立

    自動的な警告を設定し、定期的な検査を実施して、セキュリティが継続することを確認してください。

“App Store に適合する” - Capgo [1]

Keep going from API Key Security for App Store Compliance

Capgoを使用している場合、APIキーを安全に管理する必要があります。 API App Store への適合性のための API キー セキュリティ セキュリティとコンプライアンスを計画するには、接続する 暗号化 暗号化の実装詳細のために 法的合致 法的合致の実装詳細のために Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフロー Capgo トラスト センター Capgo トラスト センターの製品ワークフロー

Capacitor アプリのライブアップデート

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

マーティンから人間のサポート

スタートしてください

最新のブログ

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