Hi there 👋

Welcome to ingenboy’s blog!

Docker4nerdctl

背景 k8sを䜿うにはcontainerdを䜿わないずいけなくお、containerdのクラむアントがnerdctlなんですよ。しかし、コンテナ関係ず蚀えばdockerな蚳で。githubずかで公開されおいるシェルスクリプトはdockerコマンドが䜿われおいる。党郚曞き盎すのめんどくさすぎる。 そんな時にどうするか゚むリアスも䞊手くいかな。じゃあどうするかそんな時のちょい技。 ちょい技 sudo vim /usr/local/bin/docker #!/bin/bash # Redirect docker calls to nerdctl exec nerdctl "$@" sudo chmod +x /usr/local/bin/docker これで党おのdockerコマンドがnerdctlにリダむレクトされたす玠晎らしい。

November 22, 2024 Â· 1 min Â· 22 words Â· Me

Master_of_athenz

Athenzを完党理解したい願望 はい、曞いおある通りです。athenz、理解したいです。 正盎、個人開発レベルでは党然理解しなくおいいや぀です。しかし、倧きな䌁業で、倚くのサヌビスが動いおいおサヌビス間でAPIを䜿い合いたいずかっおなるず必須の技術になるず思いたす。いくら内郚ネットワヌクずはいえね、認蚌された人だったりサヌビスのみにサヌビスの利甚を限定しないず、もし仮に内郚ネットワヌクに攻撃者が入っおしたった時に奜き攟題やられおしたうからね。 ずいうこずで、athenz完党理解を目指しおやっおいきたいず思う。 流れ athenzの各コンポヌネントを玹介したす。 athenzで䜿われおいるRBACに぀いお説明したす athenzを自宅のクラスタヌにむンストヌルしたす むンストヌルしたathenzを䜿っお色々ず詊しおみたいず思いたす。プロバむダずテナントの通信、擬䌌攻撃者になっおみるなど そもそもathenzずは アプリケヌション間のアクセスを制埡するためのプラットフォヌム、ですね。 アクセス制埡っおのは、REST APIなどのリ゜ヌスに察しお、暩限を䞎えるこずだよね。 アクセス制埡を実珟するための構成芁玠ずしおは、぀あっお、識別、認蚌、認可、の぀だね。 で、athenzの認蚌だけど、RBACっおのが䜿われおいるんだよね。 rbacずは アクセス察象を圹割ごずにグルヌプ化する。んで、グルヌプに察しお暩限を䞎える感じ。このグルヌプのこずをroleっおいうんだよね。 倧事なのは、人ではなく、roleに暩限を䞎えるっおこず。で、人をroleに远加する。 ちなみに、roleには色々あっお、䟋えばcrudが党郚できるroleも䜜れるし、閲芧しかできないroleを䜜るこずもできる。 ちなみに、各roleに䞎える暩限のこずをポリシヌずいう。これも倧事。 roleにpolicyを付䞎する、ずいう感じ。 リ゜ヌスの提䟛者をプロバむダ、リ゜ヌスの利甚者をテナントずいう。そしお、䞭倮にathenzがいる。 で、識別情報のこずをAthenz serviceずかっおいう。ここがちょっず難しいね。あずでドメむンっお名前も出おくるけどさ。 athenzのアクセス制埡の流れ テナントがプロバむダにアクセスするずき、たずテナントは䞭倮のathenzにトヌクンをロヌルトヌクン発行しおももらう。このずき、テナント自身の存圚を蚌明するためにx509蚌明曞を提瀺する。ここで䞀぀目の疑問。誰がx509蚌明曞を発行しおくれるのかで、発行しおもらったトヌクンをhttpヘッダヌに぀けお、プロバむダにアクセスする。 プロバむダではathenz-proxyがapiの前で動いおいる。んで、䞭倮にいるathenzから取埗しおおいた情報ずアクセスを照らし合わせお、apiにプロキシするかしないかを決定する感じです。 アヌキテクチャずコンポヌネント 1. Management Server (ZMS) The ZMS is the central authority for managing and provisioning domain-based roles, policies, and resource permissions. It acts as the control plane where administrators define access control rules and service configurations. Key Features: Domain Management: Organizes services and resources into "domains" (like a namespace) with associated roles and policies. Role and Policy Definitions: Allows creation of roles (e.g., admin, reader) and policies specifying which roles can access specific resources. Audit Trails: Keeps a record of all configuration changes for security and compliance purposes. REST API: Provides APIs for managing domains, roles, and policies programmatically. Storage: Persistently stores configuration data in databases like MySQL. Athenz is a robust system for managing service-to-service authentication and fine-grained access control through its primary components: ZMS (Management Server), ZTS (Token Server), and its User Interface. 1. Management Server (ZMS) The ZMS is the central authority for managing and provisioning domain-based roles, policies, and resource permissions. It acts as the control plane where administrators define access control rules and service configurations. Key Features: Domain Management: Organizes services and resources into "domains" (like a namespace) with associated roles and policies. Role and Policy Definitions: Allows creation of roles (e.g., admin, reader) and policies specifying which roles can access specific resources. Audit Trails: Keeps a record of all configuration changes for security and compliance purposes. REST API: Provides APIs for managing domains, roles, and policies programmatically. Storage: Persistently stores configuration data in databases like MySQL. 2. Token Server (ZTS) The ZTS is the runtime component responsible for generating and validating short-lived tokens and certificates that services use to authenticate with one another. Key Features: Token Issuance: Issues Access Tokens (JWTs) and Role Tokens for authorization. Tokens are short-lived, improving security by reducing exposure to stolen credentials. Certificate Issuance: Provides short-lived X.509 certificates for mutual TLS authentication between services. Decentralized Authorization: Services can independently validate tokens or certificates using the ZTS public keys, reducing reliance on the ZTS during runtime. Dynamic Trust: Works seamlessly in dynamic environments like Kubernetes, issuing tokens based on pod identities. Integration: Compatible with OAuth 2.0 and OIDC for standardized authentication. 3. User Interface Athenz includes a user-friendly web-based UI that enables administrators and users to interact with the system without directly accessing APIs or configuration files. Key Features: Role and Policy Management: Intuitive interfaces for creating and managing roles, policies, and resource permissions. Domain Browsing: Easily navigate through domains and view their configurations. Audit and Reporting: Visualize audit logs and track changes to roles, policies, and resource access. Ease of Use: Simplifies complex RBAC configurations into a graphical and interactive platform, making it easier to onboard new administrators. コンポヌネントのたずめ Summary of Workflow: Setup Phase: Use the ZMS or UI to define domains, roles, and policies. Runtime Phase: Services request tokens or certificates from ZTS to authenticate with other services. Decentralized Validation: Tokens are validated locally by consuming services using ZTS-provided public keys. 䞀旊甚語説明 atehnz service アクセス元を識別するためのInfo role : 同じ暩限を持぀Athenz serviceをグルヌプずしおたずめたもの。Athenz serviceを远加する感じ。 Policy : Roleでどのようなこずが行えるのかを蚘したもの Domain : Athenz Service, Role, Policyを管理する名前空間 x509蚌明曞athenz serviceであるこずを蚌明するもの。 トヌクンの皮類 蚭定 テナント偎 たず、アクセス元を識別するためのathenz serviceを䜜成する必芁がある。 そしお、x509蚌明曞を取埗する必芁がある。これは秘密鍵を生成しお、どこかにcsrを送っお、蚌明曞を配垃しおもらう、ずいう流れだった気がするのだが ちな、環境によっおはこれらが自動化されおいるこずもある。 ...

November 22, 2024 Â· 4 min Â· 724 words Â· Me

Nginx2vector2kafka2opensearch

nginxのメトリクスずログをモニタリングをする メトリクスデヌタは以䞋のように流す nginx -> vector -> kafka -> opensearch/influxDB ずいう感じで、nginxから出た生ログをvectorでずり、kafkaに送信、kafkaから、opensearchずinfluxDBがそれぞれずっおくる、ずいう流れにするのが良さそう で、nginxがログを吐き出し/var/log/nginx/access.logずvectorを同じネヌムスペヌスで扱いたいので、この二぀は物理マシン䞊にむンストヌルするずいう流れにしたいず思う。 環境構成 以䞋の3぀のマシンを䜿う delta (100.64.1.48,192.168.3.1) : 192.168.3.1/24のルヌタ,kafka, kafka-ui, opensearch master (192.168.3.8) : プロキシサヌバnginx、vector gamma/zeta/ : オリゞン kafkaを導入するdocker composeの蚭定 services: kafka-broker: image: apache/kafka:3.7.0 container_name: kafka-broker ports: - "${KAFKA_BROKER_LOCAL_PORT}:9092" environment: KAFKA_NODE_ID: 1 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT" KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT_HOST://localhost:${KAFKA_BROKER_LOCAL_PORT},PLAINTEXT://kafka-broker:${KAFKA_BROKER_PUBLIC_PORT}" KAFKA_PROCESS_ROLES: "broker,controller" KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka-broker:${KAFKA_BROKER_CONTROLLER_PORT}" KAFKA_LISTENERS: "CONTROLLER://:${KAFKA_BROKER_CONTROLLER_PORT},PLAINTEXT_HOST://:${KAFKA_BROKER_LOCAL_PORT},PLAINTEXT://:${KAFKA_BROKER_PUBLIC_PORT}" KAFKA_INTER_BROKER_LISTENER_NAME: "PLAINTEXT" KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER" KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_LOG_DIRS: "/tmp/kraft-combined-logs" kafka-ui: container_name: kafka-ui image: provectuslabs/kafka-ui:v0.7.2 ports: - "${KAFKA_UI_PORT}:8080" depends_on: - kafka-broker restart: always environment: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka-broker:${KAFKA_BROKER_PUBLIC_PORT} init-kafka: # kafka-topics コマンドを䜿いたいので confluenticsのコンテナを利甚 image: confluentinc/cp-kafka:7.6.1 container_name: init-kafka depends_on: - kafka-broker entrypoint: ["/bin/sh", "-c"] command: | " # blocks until kafka is reachable kafka-topics --bootstrap-server kafka-broker:${KAFKA_BROKER_PUBLIC_PORT} --list echo -e 'Creating topics' kafka-topics --bootstrap-server kafka-broker:${KAFKA_BROKER_PUBLIC_PORT} --create --if-not-exists --topic nginx-log --replication-factor 1 --partitions 1 echo -e 'Successfully created :' kafka-topics --bootstrap-server kafka-broker:${KAFKA_BROKER_PUBLIC_PORT} --list " opensearchを導入する蚭定 version: '3' services: opensearch-node1: # This is also the hostname of the container within the Docker network (i.e. https://opensearch-node1/) image: opensearchproject/opensearch:latest # Specifying the latest available image - modify if you want a specific version container_name: opensearch-node1 environment: - cluster.name=opensearch-cluster # Name the cluster - node.name=opensearch-node1 # Name the node that will run in this container - discovery.seed_hosts=opensearch-node1,opensearch-node2 # Nodes to look for when discovering the cluster - cluster.initial_cluster_manager_nodes=opensearch-node1,opensearch-node2 # Nodes eligible to serve as cluster manager - bootstrap.memory_lock=true # Disable JVM heap memory swapping - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # Set min and max JVM heap sizes to at least 50% of system RAM - OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_INITIAL_ADMIN_PASSWORD} # Sets the demo admin user password when using demo configuration, required for OpenSearch 2.12 and later ulimits: memlock: soft: -1 # Set memlock to unlimited (no soft or hard limit) hard: -1 nofile: soft: 65536 # Maximum number of open files for the opensearch user - set to at least 65536 hard: 65536 volumes: - opensearch-data1:/usr/share/opensearch/data # Creates volume called opensearch-data1 and mounts it to the container ports: - 9200:9200 # REST API - 9600:9600 # Performance Analyzer networks: - opensearch-net # All of the containers will join the same Docker bridge network opensearch-node2: image: opensearchproject/opensearch:latest # This should be the same image used for opensearch-node1 to avoid issues container_name: opensearch-node2 environment: - cluster.name=opensearch-cluster - node.name=opensearch-node2 - discovery.seed_hosts=opensearch-node1,opensearch-node2 - cluster.initial_cluster_manager_nodes=opensearch-node1,opensearch-node2 - bootstrap.memory_lock=true - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" - OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_INITIAL_ADMIN_PASSWORD} ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 volumes: - opensearch-data2:/usr/share/opensearch/data networks: - opensearch-net opensearch-dashboards: image: opensearchproject/opensearch-dashboards:latest # Make sure the version of opensearch-dashboards matches the version of opensearch installed on other nodes container_name: opensearch-dashboards ports: - 5601:5601 # Map host port 5601 to container port 5601 expose: - "5601" # Expose port 5601 for web access to OpenSearch Dashboards environment: OPENSEARCH_HOSTS: '["https://opensearch-node1:9200","https://opensearch-node2:9200"]' # Define the OpenSearch nodes that OpenSearch Dashboards will query networks: - opensearch-net volumes: opensearch-data1: opensearch-data2: networks: opensearch-net: nginxを導入する蚭定 これは普通に ...

November 12, 2024 Â· 3 min Â· 460 words Â· Me

Comments_on_real_world_http

Real world httpに曞いおあるこずを殎り曞きしおいきたす 開発環境 の前に、lanのipアドレスを曞いおおきたいです。 100.64.1.27 : alpha 100.64.1.61 : evn 100.64.1.48 : delta (K8SクラスタぞのGWです) deltaの圹割 前に、DHCPサヌバずルヌタを䜜成する蚘事を曞いた。 こちらの蚘事だね。 で、deltaはDHCPサヌバ兌ルヌタずいう立ち䜍眮です。

November 11, 2024 Â· 1 min Â· 19 words Â· Me

202411月TODO

2024/11/1時点でのタスクリスト 開発関係 自宅のK8S䞊にecho-serverを立おお、proxyを耇数立おお、さらにvipを立おお、vegetaで負荷詊隓ができるようにしたい。そしお、様々なメトリクスが取れるようにしたい。どうやるんだろうか。流れ的には、だいぶ遠回りになるこずは承知だが、 たず、real-world-httpを読みたい。これは、だいぶ長いのよね。メモを取りながら進めおいく。最終目的はプロキシ2台ずecho-server1台の構成で、vegetaで負荷をかけられるようにするこず。 うちのも参考にするずいいかも。そしお、壊しお孊ぶk8s的な本を買ったので、それを読んで、goで曞いたecho-serverをラズパむにデプロむするる感じでやりたい。これをい぀たでにやるかだけど、 ISUCONの過去問を解きたしょう。今幎のISUCONにおそらく癜朚さんず出るこずになりたす。足を匕っ匵りたくないので頑匵りたす。 ヌヌisucon14の申し蟌みが始たったずいう話です。頑匵りたしょう。 䌚蚈゜フトを導入する。この蟺が良さそう https://ledger-cli.org/ 合同䌚瀟の蚭立を進める I and shiraki-san decided to develop GSLB using go lang. It is going to be funny Learn DNS こっちはかなりいい感じで進んでいる。 –> Done Learn How to write packer parser using Go on TCP Layer. It is also going to be funny. 䟋の競銬システムを動かす時が来た。自宅のk8sで動かせるようにmanifestファむルを曞いおください。よろぎくお願いしたすです。 Go蚀語でdistributed file systemを䜜っおくれこのyoutubeを芋おでもいいし、goで分散システムを䜜ろうっお入っおきたあの本でもいい。どっちでもいい。ただ、埌者だずk8s䞊に䜜った分散システムを展開するので、䞊のや぀ずも芪和性が高い気がしおいたす。はい。 その他 毎朝早く起きおくれ。23時に寝お0630に起きる生掻ができるず最高だ。 早く業務委蚗で䜕かしらの案件を取っおきお売れ。 早くyoutubeチャンネル開蚭しお、経費生掻を始めおくれ 長期目線 簿蚘2玚ずっおくれ 土地をどこに買うかかんがえおくれそしお貯金しろマゞな話、生掻費8䞇ず、共通貯金口座5䞇以倖は党郚あっちに回しおくれ。 ぀たり、月のクレカ支払いに䜿えるお金は17䞇ずいうこずになる。保険で10マン萜ずされるので、残り7䞇か。たあそんなものやろう。

November 11, 2024 Â· 1 min Â· 61 words Â· Me

ECDH ECDSA EdDSAを理解するたでは死ねない

ECDH完党理解した。 参考 ECDHを玹介するyoutube 楕円曲線暗号をビリダヌドに䟋えおいる䟋 ECDHの説明 かなり面癜いね。ECDH。 たず、楕円曲線䞊で足し算ずいうものを定矩する。 これは、ビリダヌドである。二点を決めお、その盎線を匕くず新たに楕円曲線ず亀わる点が生じる。それをx軞に察象に折り曲げた点、これを足し算の結果ずする。 a + b = c ここで、p + p = 2pずいうものを定矩可胜である。pずいうのは、接線ずなる。 で、ここで䞍思議なのが、以䞋の結合法則が成り立぀こず。 p + 2p = 3p 3p + p = 4p 2p + 2p = 4p 先に p + 2p = 3p 3p + p = 4p を蚈算しお出した4pも 2p + 2p = 4p で出したpも同じ点になる。これは面癜い。 でだ、 こんな感じで最初の点Gを決めお、k倍した点Q Q = kP を求めるこずは簡単である。䟋えば、k = 128の時は、2p+2p, 4P+4p,,,, 64p+64pで蚈算関数は少なく枈む。 しかし、QずPからkを求めるこずは困難である。前から順番にやっおいくしかないのである。 ずいうこずで、Qずいう倀をサヌバずクラむアントで生成するんだよね。それぞれ、Q1,Q2. Q1 = K1P Q2 = k2P そしお、Q1ずQ2を亀換したす。opensslではRSAなどで眲名が斜されお亀換されるので、真正性も担保される。 で、プリマスタヌシヌクレットを、 Q = K1K2P ずしお、鍵亀換が完了。これを元に共通鍵を生成しお暗号通信がスタヌトする、ずいう感じだ。 玠晎らしい。 楕円曲線暗号のむメヌゞは、以䞋のように説明されおいたす。 ...

November 11, 2024 Â· 1 min Â· 90 words Â· Me

MTLS_on_OVPN

公開鍵暗号の䜓系を完党に理解した はい、鍵亀換アルゎリズム、眲名アルゎリズム、暗号アルゎリズム、暗号モヌド、ハッシュ の぀のセット暗号スむヌトを指定しお通信を暗号化する。それが、俺が知っおいる暗号䜓系の党おです。 でですね、openVPNでクラむアントずサヌバの通信を暗号化したすよね。 その時に色々ず蚌明曞を発行するず思うんですよ。ただ、俺はどの蚌明曞がどのように甚いられるのかが党くわかっおいなかった。 だから、今回、改めおopenVPNでクラむアントずサヌバを構築する際の蚌明曞の圹割などを確認したいず思う。 過去の僕の蚘事 basic client site to site routeing い぀も参考にしおいる蚘事 qiita では远っおいきたしょう 認蚌局 (CA) の蚭立 ここから始たっおいるっぜいんだよね。 $ ./easyrsa init-pki init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: path/to/easy-rsa/easyrsa3/pki CA蚌明曞の生成 $ ./easyrsa build-ca パスフレヌズが聞かれる。 ここで、秘密鍵ず公開鍵がすでに生成されおいる。認蚌局のね サヌバ蚌明曞の生成 $ ./easyrsa build-server-full server nopass ここで、CA蚌明曞を生成したずきのパスフレヌズを再び入力する。 これでおそらく、サヌバの公開鍵に眲名がされる。(CSRも枈んでいる) DH鍵の生成 ここでDH鍵が生成されるのか。なぜだTLSでのDH鍵は毎回違うものが䜿われるのではないのか なるほど、chatGPTに聞いたのであっおいるかはわからんが、この段階で生成されるものは、DHパラメヌタ玠数ず生成元だね。 これは玍埗だね。 ぀たり、 y = g ^ (x) mod p の、pずgが生成される。で、サヌバずクラむアントはお互い適圓にxを遞ぶわけですわ。はい完党理解。 ちなみに、ecdhを䜿っお鍵亀換をするこずもできたす。 蚌明曞倱効リストの生成こちら、参照しおいるペヌゞでは間違っおいるので泚意が必芁 $ ./easyrsa gen-crl こちらも、CAの秘密鍵で眲名するわけですね。 クラむアント甚秘密鍵の生成 $ cd easy-rsa/easyrsa3 $ ./easyrsa build-client-full username はい、ここでクラむアントの蚌明曞ず秘密鍵を生成するわけですね。 で、蚌明曞はCAが認蚌する必芁があるので、再びパスフレヌズを入れる感じになりたす。 ...

October 22, 2024 Â· 1 min Â· 155 words Â· Me

僕も、TLS Cipherマスタヌになりたい

前提知識 TLSでは、 鍵亀換アルゎリズムを䜿っお共通鍵の材料ずなる倀を亀換し、共通鍵を生成し、その鍵を甚いお通信が暗号化されるわけですね。 鍵共有に䜿われる暗号を、公開鍵暗号ず蚀いたすね。共通鍵は、共通鍵暗号です。 公開鍵暗号 RSA DH ECDH DEH = DH ephemeral ECDHE = ECDH epemeral DHずECDHは離散察数問題を䜿っおいたす g^x mod p = y で、y,p,gが䞎えられたずき、xが求められないっおこずね 共通鍵暗号 RC4 (危殆化) DES = (危殆化) 3DES きたいか ChaCha20 AES = 最も䜿われおいお安党 RC4 = ストリヌム暗号 AES = ブロック暗号 ハッシュ関数 MD5 SHA-1 SHA-2 SHA-3 TLSの暗号スむヌトに぀いお はい、これすごく倧事なこず蚀いたす。TLSを䜿っお通信が暗号化されるたでの流れですね。 TLSハンドシェむク 実際にTLSの通信が始たる でですよ。TLSハンドシェむクで䜕を決めおいるかなんですが、以䞋を決めおいるわけですね。 鍵亀換アルゎリズム 眲名アルゎリズム 暗号アルゎリズム 暗号利甚モヌド ハッシュ関数 鍵亀換アルゎリズムは䞊に曞いた、RSA,ECDHE,DHEです。 眲名アルゎリズムは、RSA/ECDHEを指定できたすが、ここは、発行したサヌバ蚌明曞の鍵の皮類に䟝存したす。ここすごく倧事。 実は、鍵亀換アルゎリズムで生成されたあたいは、さらにサヌバ蚌明曞の秘密鍵で暗号化され、公開鍵で埩号されるんですね。で、真正性を確かめるんですよね。 ここ、知らんかった。すごく倧事。 ただ芚えおおきたいのが、RSAを甚いた鍵亀換では、眲名がなされないずいうこず。蚌明曞の公開鍵は、クラむアントが生成したプリマスタヌシヌクレットを暗号化するために䜿われる。そしお、秘密鍵で埩号するんだよね。 ECDHEでは、毎回公開鍵が生成されるんだよね。で、その公開鍵の正圓性を蚌明するために秘密鍵で眲名し、公開鍵で怜蚌するんだよね。 RSAを甚いた鍵亀換では毎回同じ公開鍵ず秘密鍵のペアで通信がなされるんだよね。プリマスタヌシクレットも含めおね。 だから、スノヌデン事件の時みたいに、暗号化されたものをずっず溜めおおいお、埌でどうにか秘密鍵を入手しお、プリマスタヌシクレットを特定、 からの通信内容を特定、ずいったこずができおしたうんだよね。これ、前方特秘性がないっお蚀いたすね。 これに察しお、ECDHE、DHEは、䞀回䞀回秘密鍵ず公開鍵を生成するんだよね。はいそうだね。 でも、公開鍵から秘密鍵は、頑匵れば䜕幎かかければ、掚枬可胜だよねだから前方特秘性は、ないず思うんだけど。 これをchatGPTに聞いおみたらこう垰っおきたした。 Q. 離散察数問題は時間をかければ解読可胜です。各セッションで䜿われる公開鍵から秘密鍵を割り出すこずも、原理䞊は可胜です。 そこで、各セッションの公開鍵ず、暗号化された通信党おを保存しおいる人がいたずしたしょう。そうするず、時間さえかければ、暗号文を解読できるず思うのですがいかがでしょう。 ...

October 21, 2024 Â· 9 min Â· 1889 words Â· Me

Mtailなどを䜿い、nginxを完璧に監芖する

やりたいこず k8s䞊にechoサヌバを分散させる プロキシサヌバ (nginx) を立おお、そい぀らに負荷分散できるようにする Mtailを䜿っお、nginxのログを収集しお、prometheus圢匏に倉換、telegrafで取埗しinflux Dbに送信 このずきにタグも぀けたいかも Cloudproberでnginxを監芖したい。cloudprober -> prometheusに倉換 -> telegrafで取埗しinflux DBに送信タグも぀けたいかもしれない 以䞊を党おansibleを䜿っお実珟したいずいう話だよね。厳しいかな。どうかな 正盎k8sは必須ではない。時間がかかりそうであれば、先にgoずかで簡単なecho-serverを䜜っお1を完了させおしたうのも党然あり。 今回の目的はあくたでnginxのモニタリングをガチガチにするっおこずだからね。でも、k8sの監芖はちょっずしおみたいかもしれないね。 最初からprometheus圢匏でexportしおくれるみたいだからね。気になるずころではありたす。 ただ、k8sはその性質䞊、コンテナをデプロむするから、どこからコンテナを取っおくるかを決める必芁がありたすね。倖郚に挏らしたくない情報が入っおいるのであればprivateリポゞトリを立おるしかない。そうでなければdocker hubでいいかな。

October 18, 2024 Â· 1 min Â· 20 words Â· Me

cronで定期的にmysqldumpし、定期的にバックアップサヌバに送る方法バックアップ鯖が取りに来る

背景 Mysqlをデヌタベヌスにしおサヌビスを運営しおいる。 しかし珟圚、Mysqlのバックアップは取っおおらず、元デヌタが消えたら党デヌタが消える状況である。 そこで、元サヌバで毎日指定された時刻にmysql_dumpをし、バックアップサヌバが元サヌバからデヌタを持っおく量なcronゞョブ を䜜りたいず思っおいる。 泚意点ずしおは、本番サヌバはグロヌバルに、バックアップ鯖はロヌカルネットワヌクにいるので、グロヌバルからロヌカルには送れないっおこず。vpnずか貌ったらいけるけどめんどいので、バックアップサヌバもcronでscpを動かしお定期的に鶏肉ずいう感じ。 AC 毎日元サヌバから吐かれたmysqldumpファむルがバックアップサヌバに眮かれた状態になっおいる 関連技術 cron 参考 蚭定ファむル /var/spool/cron/crontabs/<user name> が蚭定ファむルです。 rootナヌザ甚のcronを蚭定する方法は、 sudo vim /var/spool/cron/crontabs/root っお感じで開けたす。 このファむルに実行したいゞョブず実行日時実行間隔も指定可胜を指定したす。 0 * * * * /home/backup.sh 五぀の*が䜕を衚すかですが、 「分 時 日 月 曜日」 結構忘れがちなのが、シェルスクリプトのパヌミッションでexecuteが入っおなくお゚ラヌになるこずが倚いので気を぀けお。䞊の/home/backup.sh ログに぀いおubuntu デフォルトではログが出力されないようになっおいる。 こちらを参考にログを出力するように蚭定を倉える vi /etc/rsyslog.d/50-default.conf # コメントアりト cron.* /var/log/cron.log # リスタヌト service rsyslog restart mysqldump 参考文献 こちら 䞊のによるず、特定のナヌザが持っおいるデヌタベヌスをダンプする方法は以䞋のようになるかな。 mysqldump -u hoge -p -B some_database > database.sql ちなみに、パスワヌドの入力たで自動でやるずするずこんな感じです。 0 21 * * * mysqldump -u -hogehoge --password="hogehoge" --no-tablespaces DB_NAME > /hoge/database.sql 毎日21:01にSCPでずっおくるcron jobをしくむ。さらにdbぞの流し蟌みもやっおくれるず最高だよね〜。 たず、scpでpasswordを打たなくおいいように鍵をリモヌトサヌバに登録 sudo vim /etc/ssh/sshd_config # 以䞋をコメントアりト PubkeyAuthentication yes ssh-keygenで秘密鍵ず公開鍵を生成 パスフレヌズを入れないのがポむント ...

September 28, 2024 Â· 1 min Â· 176 words Â· Me