স্প্রিং বুট দিয়ে সিক্রেট ম্যানেজার থেকে শংসাপত্র/গোপন তথ্য পুনরুদ্ধার করা হচ্ছে

1. ওভারভিউ

গোপনীয়তা যেমন পাসওয়ার্ড, API কী, সংবেদনশীল তথ্য একটি সুরক্ষিত, এনক্রিপ্ট করা স্টোরেজ, অ্যাক্সেস নিয়ন্ত্রিত এবং নিরীক্ষণযোগ্য। কিছু সিস্টেম এই গোপনীয়তা সঞ্চয় করার জন্য ভল্ট ব্যবহার করতে বেছে নেয়। Google ক্লাউডে, আপনি সিক্রেট ম্যানেজার ব্যবহার করতে পারেন, একটি পরিচালিত পরিষেবা, গোপনীয়তাগুলিকে নিরাপদে সংরক্ষণ করতে এবং IAM ব্যবহার করে পৃথক গোপনীয়তায় অ্যাক্সেস নিয়ন্ত্রণ করতে।

স্প্রিং বুটে, আপনি স্প্রিং ক্লাউড জিসিপি ব্যবহার করে সহজেই এই গোপনীয়তাগুলিকে অন্য যেকোনো স্প্রিং বৈশিষ্ট্য হিসাবে উল্লেখ করে অ্যাক্সেস করতে পারেন।

এই কোডল্যাবে, আপনি সিক্রেট ম্যানেজারে একটি গোপনীয়তা সংরক্ষণ করবেন, তারপরে সাধারণ স্প্রিং বুট মাইক্রোসার্ভিস তৈরি করবেন এবং গোপনটি পুনরুদ্ধার করবেন।

আপনি কি শিখবেন

  • কিভাবে একটি স্প্রিং বুট জাভা অ্যাপ্লিকেশন তৈরি করবেন এবং সিক্রেট ম্যানেজার কনফিগার করবেন।

আপনি কি প্রয়োজন হবে

  • একটি Google ক্লাউড প্রকল্প
  • একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
  • স্ট্যান্ডার্ড লিনাক্স টেক্সট এডিটর যেমন Vim, EMACs বা Nano এর সাথে পরিচিতি

কিভাবে আপনি এই টিউটোরিয়াল ব্যবহার ব্যবহার করবেন?

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

এইচটিএমএল/সিএসএস ওয়েব অ্যাপ তৈরি করার ক্ষেত্রে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

আপনি Google ক্লাউড পরিষেবাগুলি ব্যবহার করার সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ (যদি আপনার ইতিমধ্যেই একটি Gmail বা G Suite অ্যাকাউন্ট না থাকে তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemXuD0pdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemXuD0pdYncY5Gv3GU Zw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLpGtQd5Q55

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3oK3o67gCu67jCGUJCGUX67j

প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

গুগল ক্লাউড শেল

যদিও Google ক্লাউড পরিষেবাগুলি আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আমরা Google ক্লাউড শেল ব্যবহার করব, ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0ZFZkWt2QLZWR5 dgUDQ .

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb- IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFGUXM2QUZQ4 2ecHrbzQ

আপনি যদি আগে কখনও ক্লাউড শেল শুরু না করে থাকেন, তাহলে আপনাকে একটি মধ্যবর্তী স্ক্রীন (ভাঁজের নীচে) উপস্থাপন করা হবে যা বর্ণনা করে। যদি এটি হয়, তবে চালিয়ে যান ক্লিক করুন (এবং আপনি এটি আর কখনও দেখতে পাবেন না)। এককালীন স্ক্রীনটি দেখতে কেমন তা এখানে রয়েছে:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoew65-fi2LJo4twUoew65-fi2LJo4twUoew6rq-13SUj

ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7OD6P1I47nz8vrAdK7yPgxyPvR8 hA

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, শুধুমাত্র একটি ব্রাউজার বা আপনার Chromebook দিয়ে করা যেতে পারে।

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকরণ করেছেন এবং প্রকল্পটি ইতিমধ্যে আপনার প্রকল্প আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
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

একবার অ্যাপ্লিকেশন শুরু হলে, ওয়েব প্রিভিউ আইকনে ক্লিক করুন e18df08334f0d809.png ক্লাউড শেল টুলবারে এবং পোর্ট 8080-এ প্রিভিউ বেছে নিন।

একটি সংক্ষিপ্ত অপেক্ষা করার পরে আপনি ফলাফল দেখতে হবে:

1e9a7884ff113c14.png

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

একবার অ্যাপ্লিকেশন শুরু হলে, ওয়েব প্রিভিউ আইকনে ক্লিক করুন e18df08334f0d809.png ক্লাউড শেল টুলবারে এবং পোর্ট 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. অভিনন্দন!

আপনি শিখেছেন কিভাবে জাভাতে সিক্রেট ম্যানেজার এপিআই ব্যবহার করতে হয়।

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।