1. ওভারভিউ
গোপনীয়তা যেমন পাসওয়ার্ড, API কী, সংবেদনশীল তথ্য একটি সুরক্ষিত, এনক্রিপ্ট করা স্টোরেজ, অ্যাক্সেস নিয়ন্ত্রিত এবং নিরীক্ষণযোগ্য। কিছু সিস্টেম এই গোপনীয়তা সঞ্চয় করার জন্য ভল্ট ব্যবহার করতে বেছে নেয়। Google ক্লাউডে, আপনি সিক্রেট ম্যানেজার ব্যবহার করতে পারেন, একটি পরিচালিত পরিষেবা, গোপনীয়তাগুলিকে নিরাপদে সংরক্ষণ করতে এবং IAM ব্যবহার করে পৃথক গোপনীয়তায় অ্যাক্সেস নিয়ন্ত্রণ করতে।
স্প্রিং বুটে, আপনি স্প্রিং ক্লাউড জিসিপি ব্যবহার করে সহজেই এই গোপনীয়তাগুলিকে অন্য যেকোনো স্প্রিং বৈশিষ্ট্য হিসাবে উল্লেখ করে অ্যাক্সেস করতে পারেন।
এই কোডল্যাবে, আপনি সিক্রেট ম্যানেজারে একটি গোপনীয়তা সংরক্ষণ করবেন, তারপরে সাধারণ স্প্রিং বুট মাইক্রোসার্ভিস তৈরি করবেন এবং গোপনটি পুনরুদ্ধার করবেন।
আপনি কি শিখবেন
- কিভাবে একটি স্প্রিং বুট জাভা অ্যাপ্লিকেশন তৈরি করবেন এবং সিক্রেট ম্যানেজার কনফিগার করবেন।
আপনি কি প্রয়োজন হবে
- একটি Google ক্লাউড প্রকল্প
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
- স্ট্যান্ডার্ড লিনাক্স টেক্সট এডিটর যেমন Vim, EMACs বা Nano এর সাথে পরিচিতি
কিভাবে আপনি এই টিউটোরিয়াল ব্যবহার ব্যবহার করবেন?
এইচটিএমএল/সিএসএস ওয়েব অ্যাপ তৈরি করার ক্ষেত্রে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
আপনি Google ক্লাউড পরিষেবাগুলি ব্যবহার করার সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?
2. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ (যদি আপনার ইতিমধ্যেই একটি Gmail বা G Suite অ্যাকাউন্ট না থাকে তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)
প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID
হিসাবে উল্লেখ করা হবে।
- এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷
এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
গুগল ক্লাউড শেল
যদিও Google ক্লাউড পরিষেবাগুলি আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আমরা Google ক্লাউড শেল ব্যবহার করব, ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।
ক্লাউড শেল সক্রিয় করুন
- ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন .
আপনি যদি আগে কখনও ক্লাউড শেল শুরু না করে থাকেন, তাহলে আপনাকে একটি মধ্যবর্তী স্ক্রীন (ভাঁজের নীচে) উপস্থাপন করা হবে যা বর্ণনা করে। যদি এটি হয়, তবে চালিয়ে যান ক্লিক করুন (এবং আপনি এটি আর কখনও দেখতে পাবেন না)। এককালীন স্ক্রীনটি দেখতে কেমন তা এখানে রয়েছে:
ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷
এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, শুধুমাত্র একটি ব্রাউজার বা আপনার Chromebook দিয়ে করা যেতে পারে।
একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকরণ করেছেন এবং প্রকল্পটি ইতিমধ্যে আপনার প্রকল্প আইডিতে সেট করা আছে।
- আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
কমান্ড আউটপুট
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
কমান্ড আউটপুট
[core] project = <PROJECT_ID>
যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:
gcloud config set project <PROJECT_ID>
কমান্ড আউটপুট
Updated property [core/project].
3. একটি গোপন কনফিগার করুন
সিক্রেট ম্যানেজার ব্যবহার করতে, প্রথমে API সক্ষম করুন:
$ gcloud services enable secretmanager.googleapis.com
তারপর, Hello
এর মান সহ greeting
নামে একটি গোপনীয়তা তৈরি করুন:
$ echo -n "Hello" | \ gcloud secrets create greeting \ --data-file=-
এই কমান্ডটি কমান্ড লাইনে মান প্রদান করতে STDIN
ব্যবহার করে। যাইহোক, আপনি সহজভাবে একটি ফাইলে গোপন মান রাখতে পারেন, একটি --data-file
আর্গুমেন্টের জন্য ফাইলের নাম উল্লেখ করুন।
আপনি gcloud CLI ব্যবহার করে সমস্ত গোপনীয়তা তালিকাভুক্ত করতে পারেন:
$ gcloud secrets list
4. একটি নতুন স্প্রিং বুট REST পরিষেবা তৈরি করুন৷
ক্লাউড শেল চালু হওয়ার পরে, আপনি স্প্রিং ইনিশিয়ালাইজারের সাথে একটি নতুন স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করতে কমান্ড লাইন ব্যবহার করতে পারেন:
$ curl https://start.spring.io/starter.tgz -d packaging=jar \ -d dependencies=web,cloud-gcp \ -d bootVersion=3.0.6 \ -d type=maven-project \ -d baseDir=hello-secret-manager | tar -xzvf - \ && cd hello-secret-manager
pom.xml
এ, স্প্রিং ক্লাউড GCP স্টার্টার নির্ভরতা যোগ করুন:
pom.xml
<project>
...
<dependencies>
...
<!-- Add Secret Manager Starter -->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-secretmanager</artifactId>
</dependency>
</dependencies>
...
</project>
src/main/resources/application.properties
ফাইলে, স্প্রিং বুট কনফিগার ডেটা API সক্রিয় করতে নিম্নলিখিত কনফিগারেশন যোগ করুন। :
spring.config.import=sm://
এটি একটি স্প্রিং প্রপার্টি সোর্স কনফিগার করবে, যাতে আপনি sm://
এর উপসর্গ সহ একটি সম্পত্তি মান ব্যবহার করে গোপনীয়তাগুলি উল্লেখ করতে পারেন, উদাহরণস্বরূপ, sm://greeting
।
সম্পত্তির বিন্যাসে আরও বিস্তারিত জানার জন্য স্প্রিং ক্লাউড জিসিপি সিক্রেট ম্যানেজার ডকুমেন্টেশন দেখুন। মনে রাখবেন Spring Cloud GCP 4.x-এ application.properties
প্রয়োজনীয়তা নতুন। মাইগ্রেশন গাইডে আরও বিস্তারিত পড়ুন ।
একটি নতুন ক্লাস ফাইল যোগ করে একটি নতুন REST কন্ট্রোলার তৈরি করুন:
src/main/java/com/example/demo/HelloSecretController.java
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloSecretController {
String greeting = "Hi";
@GetMapping("/")
public String hello() {
return greeting + " World!";
}
}
আপনি স্প্রিং বুট প্লাগইন দিয়ে সাধারণত স্প্রিং বুট অ্যাপ্লিকেশন শুরু করতে পারেন।
নিশ্চিত করুন যে JAVA_HOME সঠিক JDK সংস্করণে সেট করা আছে:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
আসুন এই ল্যাবের জন্য পরীক্ষাগুলি এড়িয়ে যাই এবং অ্যাপ্লিকেশনটি শুরু করি:
$ ./mvnw -DskipTests spring-boot:run
একবার অ্যাপ্লিকেশন শুরু হলে, ওয়েব প্রিভিউ আইকনে ক্লিক করুন ক্লাউড শেল টুলবারে এবং পোর্ট 8080-এ প্রিভিউ বেছে নিন।
একটি সংক্ষিপ্ত অপেক্ষা করার পরে আপনি ফলাফল দেখতে হবে:
5. একটি গোপন পুনরুদ্ধার করুন
আপনি sm://
উপসর্গ ব্যবহার করে গোপন সম্পত্তি উল্লেখ করতে @Value
টীকা ব্যবহার করতে পারেন।
HelloSecretController ক্লাসে, টীকা ব্যবহার করে greeting
মানটি ইনজেক্ট করুন:
src/main/java/com/example/demo/HelloSecretController.java
import org.springframework.beans.factory.annotation.Value;
...
@RestController
public class HelloSecretController {
@Value("${sm://greeting}")
String greeting;
...
}
আপনি স্প্রিং বুট প্লাগইন দিয়ে সাধারণত স্প্রিং বুট অ্যাপ্লিকেশন শুরু করতে পারেন। আসুন এই ল্যাবের জন্য পরীক্ষাগুলি এড়িয়ে যাই:
$ ./mvnw -DskipTests spring-boot:run
একবার অ্যাপ্লিকেশন শুরু হলে, ওয়েব প্রিভিউ আইকনে ক্লিক করুন ক্লাউড শেল টুলবারে এবং পোর্ট 8080-এ প্রিভিউ বেছে নিন।
একটি সংক্ষিপ্ত অপেক্ষা করার পরে আপনি ফলাফল দেখতে হবে:
আপনি application.properties
এ একটি সম্পত্তির মান ম্যাপ করতে পারেন:
src/main/resources/application.properties
greeting=${sm://greeting}
HelloSecretController-এ, আপনি একটি সিক্রেট ম্যানেজার নামের বিপরীতে এই আরও জেনেরিক সম্পত্তির নাম উল্লেখ করতে পারেন:
src/main/java/com/example/demo/HelloSecretController.java
@RestController
public class HelloSecretController {
@Value("${greeting}")
String greeting;
...
}
আপনি স্প্রিং বুট প্লাগইন দিয়ে সাধারণত স্প্রিং বুট অ্যাপ্লিকেশন শুরু করতে পারেন। আসুন এই ল্যাবের জন্য পরীক্ষাগুলি এড়িয়ে যাই:
$ ./mvnw -DskipTests spring-boot:run
একবার অ্যাপ্লিকেশন শুরু হলে, ওয়েব প্রিভিউ আইকনে ক্লিক করুন ক্লাউড শেল টুলবারে এবং পোর্ট 8080-এ প্রিভিউ বেছে নিন।
গোপন মান আপডেট করা হচ্ছে
sm://greeting
সংক্ষিপ্ত সিনট্যাক্স ব্যবহার করে, আপনি স্বয়ংক্রিয়ভাবে গোপনের সর্বশেষ সংস্করণটি ব্যবহার করেন। গোপনের একটি নতুন সংস্করণ তৈরি করে, আপনি আপনার কোড পরিবর্তন না করেই আপনার অ্যাপ্লিকেশন আপডেট করতে পারেন৷
একটি নতুন সংস্করণ যোগ করে গোপন মান আপডেট করুন:
$ echo -n "Greetings" | gcloud secrets versions add greeting \ --data-file=-
অ্যাপ্লিকেশনটি পুনরায় চালু করুন, এবং দেখুন গোপনটির নতুন সংস্করণটি ফেরত দেওয়া হচ্ছে।
এই ধারণা প্রসারিত
এই কৌশলটি উপযোগী বিশেষ করে যদি আপনি বিভিন্ন স্প্রিং বুট অ্যাপ্লিকেশন প্রোফাইল ব্যবহার করেন। উদাহরণস্বরূপ, আপনি greeting-dev
, greeting-staging
, greeting-prod
এর মতো গোপনীয়তা তৈরি করতে পারেন। এবং প্রোফাইল প্রতিটি, ডান অভিবাদন মানচিত্র.
একটি greeting-prod
গোপনীয়তা তৈরি করুন:
$ echo -n "Hola" | \ gcloud secrets create greeting-prod \ --data-file=- --replication-policy=automatic
একটি application-prod.properties
ফাইল তৈরি করুন:
src/main/resources/application-prod.properties
greeting=${sm://greeting-prod}
আপনি স্প্রিং বুট অ্যাপ্লিকেশনটি সাধারণত স্প্রিং বুট প্লাগইন দিয়ে শুরু করতে পারেন, কিন্তু prod
প্রোফাইল দিয়ে। আসুন এই ল্যাবের জন্য পরীক্ষাগুলি এড়িয়ে যাই:
$ ./mvnw -DskipTests spring-boot:run -Dspring-boot.run.profiles=prod
একবার অ্যাপ্লিকেশন শুরু হলে, ওয়েব প্রিভিউ আইকনে ক্লিক করুন ক্লাউড শেল টুলবারে এবং পোর্ট 8080-এ প্রিভিউ বেছে নিন।
একটি সংক্ষিপ্ত অপেক্ষা করার পরে আপনি ফলাফল দেখতে হবে:
6. সারাংশ
এই ল্যাবে, আপনি একটি পরিষেবা তৈরি করেছেন যা সিক্রেট ম্যানেজারে সংরক্ষিত গোপনীয়তাগুলি ব্যবহার করে sm://
দিয়ে প্রিফিক্স করা স্প্রিং-এর সম্পত্তির নাম ব্যবহার করে এবং applications.properties
ফাইল এবং @Value
টীকা থেকে মান ইনজেক্ট করে কনফিগার করা যেতে পারে।
7. অভিনন্দন!
আপনি শিখেছেন কিভাবে জাভাতে সিক্রেট ম্যানেজার এপিআই ব্যবহার করতে হয়।
আরও জানুন
- GCP প্রকল্পে বসন্ত: http://cloud.spring.io/spring-cloud-gcp/
- GCP GitHub সংগ্রহস্থলে বসন্ত: https://github.com/GoogleCloudPlatform/spring-cloud-gcp
- Google ক্লাউডে জাভা: https://cloud.google.com/java/
- সিক্রেট ম্যানেজারের গোপনীয়তায় অ্যাক্সেস নিয়ন্ত্রণ করা: https://cloud.google.com/secret-manager/docs/access-control
- সিক্রেট ম্যানেজারে অডিট লগিং: https://cloud.google.com/secret-manager/docs/audit-logging
লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।