پیکربندی «امنیت لایه انتقال» برای API BaaS

Edge for Private Cloud v. 4.17.09

«امنیت لایه انتقال» (TLS که پیش‌از آن SSL بوده است) فناوری امنیتی استاندارد برای تضمین پیام‌رسانی امن و رمزگذاری‌شده در محیط API شما است. می‌توانید «امنیت لایه انتقال» را در گره‌های «پورتال API BaaS» و «پشته API BaaS» پیکربندی کنید.

تصویر زیر نمودار استقرار معمولی را برای API BaaS با یک گره «درگاه BaaS» و سه گره «پشته API BaaS» نشان می‌دهد.

توسعه‌دهندگان از مرورگر برای ارسال درخواست به «درگاه» استفاده می‌کنند. به‌طور پیش‌فرض، درخواست‌ها از پروتکل HTTP در درگاه ۹۰۰۰ گره «درگاه» استفاده می‌کنند.

این استقرار شامل ترازکننده بار بین گره‌های «درگاه» و «پشته» است. در این پیکربندی، «درگاه» درخواست‌های HTTP را به ترازکننده بار ارسال می‌کند و ترازکننده بار سپس درخواست‌ها را به یکی از گره‌های «پشته» بازارسال می‌کند. این محیط استقرار توصیه‌شده برای سیستم تولید است.

گزینه‌های پیکربندی «امنیت لایه انتقال»

هنگام پیکربندی «امنیت لایه انتقال» برای «میانای برنامه‌سازی کاربردی BaaS»، چندین گزینه دارید:

  • «امنیت لایه انتقال» را در «درگاه» و در ترازکننده بار برای گره‌های «پشته» پیکربندی کنید

    در این پیکربندی، توسعه‌دهندگان از پروتکل HTTPS برای دسترسی به «درگاه» استفاده می‌کنند و «درگاه» که در مرورگر اجرا می‌شود از HTTPS برای درخواست دادن به گره‌های «پشته» ازطریق ترازکننده بار استفاده می‌کند. ترازکننده بار از HTTP برای دسترسی به گره‌های Stack استفاده می‌کند.
  • ‫TLS را در «درگاه»، ترازکننده بار، و گره‌های «پشته» پیکربندی کنید

    برای افزایش امنیت، ترازکننده بار را پیکربندی کنید تا از TLS برای دسترسی به گره‌های «پشته» استفاده کند.
  • پیکربندی کردن TLS در «درگاه» و در یک گره «پشته»

    در محیطی کوچک، مثل محیط آزمایش یا توسعه، ممکن است فقط یک گره «پشته» داشته باشید، یعنی نیازی به افزودن ترازکننده بار نیست. در این پیکربندی، «امنیت لایه انتقال» را در هر دو گره «درگاه» و «پشته» پیکربندی کنید.
  • پیکربندی «امنیت لایه انتقال» در ترازکننده بار برای «درگاه»

    یکی از گزینه‌هایی که در بالا نشان داده نشده است استفاده از ترازکننده بار در مقابل گره «درگاه» است. در آن پیکربندی، می‌توانید «امنیت لایه انتقال» را در ترازکننده بار و به‌صورت اختیاری در اتصال بین ترازکننده بار و «درگاه» پیکربندی کنید.

مطمئن شوید درگاه TLS باز است

روال‌های زیر «امنیت لایه انتقال» را در درگاه پیش‌فرض «درگاه» ۹۰۰۰ و گره «پشته» ۸۰۸۰ پیکربندی می‌کند. بااین‌حال، درصورت تمایل می‌توانید این درگاه را تغییر دهید.

صرف‌نظر از درگاهی که استفاده می‌کنید، باید مطمئن شوید که درگاه در گره باز است. برای مثال، می‌توانید از فرمان زیر برای باز کردن درگاه ۸۴۴۳ استفاده کنید:

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

پیکربندی «امنیت لایه انتقال» در پشته API BaaS

به‌طور پیش‌فرض، «امنیت لایه انتقال» برای «پشته BaaS API» غیرفعال است. سپس بااستفاده از نشانی IP یا نام ساناد گره Stack و درگاه ۸۰۸۰ ازطریق HTTP به BaaS API دسترسی پیدا می‌کنید. برای مثال:

http://stack_IP:8080

یا می‌توانید دسترسی به «میانای برنامه‌سازی کاربردی BaaS» را با «امنیت لایه انتقال» پیکربندی کنید تا بتوانید به آن در این قالب دسترسی داشته باشید:

https://stack_IP:8080

در این مثال، دسترسی «امنیت لایه انتقال» را پیکربندی می‌کنید تا از درگاه ۸۰۸۰ استفاده کند. بااین‌حال، درگاه ۸۰۸۰ الزامی نیست - می‌توانید «پشته» را پیکربندی کنید تا از درگاه دیگری استفاده کند. تنها شرط این است که دیوار آتش شما اجازه دهد ترافیک ازطریق درگاه مشخص‌شده عبور کند.

«پشته» فقط می‌تواند از یک نوع درخواست (HTTP یا HTTPS) در یک درگاه پشتیبانی کند. بنابراین، اگر دسترسی HTTPS را در درگاه ۸۰۸۰ پیکربندی کنید، نمی‌توانید از HTTP برای دسترسی به درگاه ۸۰۸۰ استفاده کنید. اگر «پشته» را پیکربندی کنید تا از درگاه ۸۴۴۳ با HTTPS استفاده کند، «پشته» دیگر در درگاه ۸۰۸۰ گوش نخواهد داد.

از روش زیر برای پیکربندی دسترسی «امنیت لایه انتقال» به «پشته» استفاده کنید:

  1. فایل keystore JKS حاوی گواهی TLS و کلید خصوصی‌تان را تولید کنید. برای اطلاعات بیشتر، پیکربندی «امنیت لایه انتقال»/ SSL برای Edge On Premises را ببینید.
    توجه: مطمئن شوید که گذرواژه ذخیره‌گاه کلید و کلید یکسان باشد.
  2. فایل JKS انبار کلید را در دایرکتوری گره Stack، مثلاً /opt/apigee/customer/application، کپی کنید. کاربر «apigee» باید به فهرست راهنما دسترسی داشته باشد.
  3. مالکیت فایل JKS را به کاربر «apigee» تغییر دهید:
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    که در آن keystore.jks نام فایل انبار کلید شما است.
  4. فایل /opt/apigee/customer/application/usergrid.properties را ویرایش کنید تا ویژگی‌های زیر، ازجمله مسیر فایل JKS و گذرواژه در انبار کلید و کلید را تنظیم کنید. اگر این فایل وجود ندارد، آن را ایجاد کنید:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # به‌طور پیش‌فرض، دسترسی TLS از درگاه ۸۰۸۰ استفاده می‌کند.
    # از این دارایی برای مشخص کردن درگاهی متفاوت استفاده کنید.
    # tomcat-server_port=8080


    هشدار: مقدار گذرواژه باید به‌صورت نوشتار واضح باشد. بنابراین باید از usergrid.properties دربرابر دسترسی غیرمجاز محافظت کنید.

    از دارایی tomcat-server_keyalias برای مشخص کردن نام مستعار انبار کلید استفاده کنید. نام مستعار کلید را در زمان ایجاد کلید تنظیم می‌کنید. برای مثال، می‌توانید آن را بااستفاده از گزینه -alias به فرمان keytool تنظیم کنید.

    از tomcat-server_ssl.protocols برای تنظیم پروتکل‌های «امنیت لایه انتقال» پشتیبانی‌شده توسط «پشته» استفاده کنید. برای دیدن فهرست پروتکل‌های پشتیبانی‌شده توسط Java 8، به http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename مراجعه کنید.
  5. پیکربندی گره «پشته»:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. بازراه‌اندازی پشته BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. با اجرای دستور cURL زیر در گره «پشته» بااستفاده از HTTPS، تأیید کنید که TLS کار می‌کند:
    > curl -k https://localhost:8080/status -v

    اگر TLS به‌درستی پیکربندی شده باشد، باید پاسخی حاوی اطلاعات وضعیت ببینید.

    اگر دسترسی «امنیت لایه انتقال» را روی درگاهی غیراز ۸۰۸۰ پیکربندی کرده‌اید، فرمان بالا را اصلاح کنید تا از درگاه صحیح استفاده کند.
  8. این کار را برای همه گره‌های «پشته» تکرار کنید.
  9. اگر در مقابل گره‌های Stack ترازکننده بار دارید، ترازکننده بار را پیکربندی کنید تا درخواست‌ها را ازطریق HTTPS به گره‌های Stack ارسال کند. برای اطلاعات بیشتر، مستندات مربوط به ترازکننده بار را ببینید.

    اگر «درگاه» درخواست‌های مستقیمی به «پشته» ارسال می‌کند، «درگاه» را به‌گونه‌ای پیکربندی کنید که طبق آنچه در بخش زیر توضیح داده شده است ازطریق HTTPS به «پشته» دسترسی پیدا کند.
  10. از رویه زیر در «پیکربندی گره‌های پشته API BaaS برای TLS در پشته یا درگاه» استفاده کنید تا مطمئن شوید گره پشته هنگام تولید پاسخ‌های کاربر نشانی‌های وب TLS صحیح را دارد.

درحال پیکربندی «درگاه» برای دسترسی به «پشته» ازطریق «امنیت لایه انتقال»

«درگاه BaaS» که در مرورگر اجرا می‌شود با فراخوانی «میانای برنامه‌سازی کاربردی» در «پشته BaaS» کار می‌کند. اگر «پشته BaaS» را پیکربندی کنید تا از «امنیت لایه انتقال» استفاده کند، باید «درگاه» را نیز پیکربندی کنید تا این تماس‌ها را ازطریق HTTPS برقرار کند.

نصب API BaaS معمولاً برای یکی از این موارد پیکربندی می‌شود:

  • از ترازکننده بار بین گره‌های «درگاه» و «پشته» استفاده کنید

    ترازکننده بار را پیکربندی کنید تا درخواست‌ها را ازطریق HTTPS به گره‌های «پشته» ارسال کند. برای اطلاعات بیشتر، مستندات ترازکننده بار را ببینید.

    در این پیکربندی، «درگاه» می‌تواند ازطریق HTTP یا HTTPS به ترازکننده بار دسترسی داشته باشد، بسته به نحوه پیکربندی ترازکننده بار. اگر ترازکننده بار از TLS استفاده می‌کند، از روش زیر برای پیکربندی «درگاه» استفاده کنید تا درخواست‌هایی را به ترازکننده بار HTTPS ارسال کند.
  • درگاه درخواست‌های مستقیم به «پشته» ارسال کند

    «درگاه» را پیکربندی کنید تا طبق آنچه در زیر توضیح داده شده است ازطریق HTTPS به «پشته» دسترسی پیدا کند.

از روش زیر برای پیکربندی «درگاه API BaaS» به‌منظور انجام تماس‌های API ازطریق HTTPS استفاده کنید:

  1. دسترسی به TLS را در «پشته BaaS» همان‌طور که در بالا توضیح داده شده است، یا در ترازکننده بار برای گره‌های «پشته» همان‌طور که در مستندات ترازکننده بار توضیح داده شده است پیکربندی کنید.
  2. برای تنظیم دارایی زیر، /opt/apigee/customer/application/portal.properties را ویرایش کنید. اگر این فایل وجود ندارد، آن را ایجاد کنید:
    baas.portal.config.overrideUrl=https://stackIP:port

    نشانی IP یا نام ساناد و درگاه گره «پشته API» را به‌عنوان مقدار این دارایی مشخص کنید برای نصب تک‌گره، یا ترازکننده بار اگر ترازکننده بار در مقابل گره‌های «پشته API BaaS» دارید.
  3. پیکربندی گره «درگاه»:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. «درگاه» را بااستفاده از این فرمان بازراه‌اندازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. اگر هنگام پیکربندی دسترسی TLS به «پشته» در بالا از گواهینامه خودامضایی استفاده کرده‌اید، مرورگرتان ممکن است درخواست‌های «پشته» از «درگاه» را مجاز نکند. اگر در مرورگر خطایی مشاهده کردید که دسترسی HTTPS به Stack مجاز نیست، نشانی وب زیر را در مرورگرتان درخواست کنید و استثنای امنیتی اضافه کنید تا دسترسی مجاز شود:
    https://stackIP:port/status

    نشانی IP یا نام ساناد و درگاه گره API Stack یا ترازکننده بار را مشخص کنید.

پیکربندی «امنیت لایه انتقال» در «درگاه API BaaS»

به‌طور پیش‌فرض، کاربران با ایجاد درخواست‌های HTTP رمزگذاری‌نشده ازطریق درگاه ۹۰۰۰ در سرور «درگاه» به «درگاه» دسترسی پیدا می‌کنند. می‌توانید پورتال را پیکربندی کنید تا از HTTPS برای رمزگذاری داده‌های ارسالی به و از پورتال استفاده کند.

به‌طور پیش‌فرض، بااستفاده از نشانی IP یا نام ساناد گره «درگاه» و درگاه ۹۰۰۰ ازطریق HTTP به «درگاه» دسترسی پیدا می‌کنید. برای مثال:

http://portal_IP:9000

یا می‌توانید دسترسی «امنیت لایه انتقال» به «درگاه» را پیکربندی کنید تا بتوانید به این درگاه در قالب زیر دسترسی داشته باشید:

https://portal_IP:9443

در این مثال، دسترسی «امنیت لایه انتقال» را پیکربندی می‌کنید تا از درگاه ۹۴۴۳ استفاده کند. بااین‌حال، درگاه ۹۴۴۳ الزامی نیست - می‌توانید «درگاه» را پیکربندی کنید تا از درگاه دیگری استفاده کند.

«درگاه» فقط می‌تواند از یک نوع درخواست (HTTP یا HTTPS) در یک درگاه پشتیبانی کند. بنابراین، اگر دسترسی HTTPS را در درگاه ۹۰۰۰ پیکربندی کنید، نمی‌توانید از HTTP برای دسترسی به درگاه ۹۰۰۰ استفاده کنید. اگر «درگاه» را پیکربندی کنید تا از درگاه ۹۴۴۳ با HTTPS استفاده کند، «درگاه» دیگر در درگاه ۹۰۰۰ گوش نخواهد داد.

برای پیکربندی «امنیت لایه انتقال» برای «درگاه»:

  1. فایل کلید و فایل گواهی را در قالب PEM ایجاد کنید.
    توجه: مطمئن شوید که کلید یا گواهینامه گذرواژه/عبارت عبور نداشته باشد.
  2. فایل‌های PEM را در دایرکتوری در گره «درگاه» کپی کنید، مثلاً /opt/apigee/customer/application. کاربر «apigee» باید به فهرست راهنما دسترسی داشته باشد.
  3. مالکیت فایل‌های PEM را به کاربر «apigee» تغییر دهید:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. فایل /opt/apigee/customer/application/portal.properties را ویرایش کنید تا مشخصه‌های زیر را تنظیم کنید. اگر این فایل وجود ندارد، آن را ایجاد کنید:
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # به‌طور پیش‌فرض، دسترسی «امنیت لایه انتقال» از درگاه ۹۰۰۰ استفاده می‌کند.
    # از این دارایی برای مشخص کردن درگاهی متفاوت استفاده کنید.
    # baas.portal.listen=9000


    از baas.portal.ssl.protocols برای تنظیم پروتکل‌های «امنیت لایه انتقال» پشتیبانی‌شده توسط «درگاه» استفاده کنید. برای فهرست پروتکل‌های پشتیبانی‌شده، به فهرست نام‌های پروتکل SSL تعریف‌شده توسط Nginx مراجعه کنید: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. پیکربندی گره «درگاه»:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. بازراه‌اندازی «درگاه»:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  7. از روش زیر در «پیکربندی گره‌های پشته API BaaS برای TLS در پشته یا «درگاه»» استفاده کنید تا مطمئن شوید گره «پشته» نشانی وب TLS صحیح را برای «درگاه» دارد.

پیکربندی گره‌های میانای برنامه‌سازی کاربردی BaaS برای «امنیت لایه انتقال» در «پشته» یا «درگاه»

اگر ترازکننده بار را در جلوی گره‌های «پشته» یا «درگاه» قرار دهید، یا اگر TLS را مستقیماً در گره «درگاه» یا «پشته» فعال کنید، باید گره‌ها را با نشانی‌های وب صحیح برای دسترسی به «پشته» و «درگاه» پیکربندی کنید. برای مثال، گره‌های «پشته» در موارد زیر به این اطلاعات نیاز دارند:

  • افزودن نشانی وب در پاسخ‌های درخواست‌های BaaS API.
  • افزودن پیوند در الگوهای ایمیل هنگام بازنشانی گذرواژه یا ارسال اعلان‌های دیگر.
  • کاربران را به صفحه‌های خاص «درگاه» هدایت می‌کند.

اگر از ترازکننده بار در مقابل گره‌های Stack استفاده می‌کنید یا «امنیت لایه انتقال» را در گره Stack پیکربندی می‌کنید، دارایی زیر را در /opt/apigee/customer/application/usergrid.properties تنظیم کنید:

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

http://localhost:8080 را با نشانی وب ترازکننده بار جایگزین کنید. اگر ترازکننده بار برای استفاده از TLS پیکربندی شده است، از پروتکل HTTPS استفاده کنید. فقط درصورتی باید درگاه را اضافه کنید که از درگاه غیراستانداردی استفاده می‌کنید، یعنی چیزی غیر از درگاه ۸۰ برای HTTP و درگاه ۴۴۳ برای HTTPS.

اگر از ترازکننده بار در مقابل گره‌های «پشته» استفاده می‌کنید، باید ویژگی زیر را نیز در /opt/apigee/customer/application/portal.properties تنظیم کنید:

baas.portal.config.overrideUrl=http://localhost:8080

http://localhost:8080 را با نشانی وب ترازکننده بار برای «پشته» جایگزین کنید.

اگر از ترازکننده بار در مقابل گره «درگاه» استفاده می‌کنید یا «امنیت لایه انتقال» را در گره «پشته» پیکربندی می‌کنید، ویژگی‌های زیر را در usergrid.properties تنظیم کنید:

usergrid-deployment_portal.url=http://localhost:9000

http://localhost:9000 را با نشانی وب ترازکننده بار جایگزین کنید. اگر ترازکننده بار برای استفاده از TLS پیکربندی شده است، از پروتکل HTTPS استفاده کنید. فقط درصورتی باید درگاه را اضافه کنید که از درگاه غیراستاندارد استفاده می‌کنید، یعنی چیزی غیر از درگاه ۸۰ برای HTTP و درگاه ۴۴۳ برای HTTPS.

پس‌از ویرایش usergrid.properties:

  1. پیکربندی گره «پشته»:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. بازراه‌اندازی پشته BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. اگر portal.properties را تغییر دادید، گره «درگاه» را پیکربندی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. بازراه‌اندازی «درگاه BaaS»:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart