The enormous growth of data being stored or computed online poses unique challenges for cloud service providers. The need to guarantee reliability, efficiency, and security in distributed storage systems (DSS) has created a new set of problems for coding theorists. In the first half of the talk, we focus on the problem of achieving information-theoretic security in DSS against an eavesdropper that can observe a limited number of nodes. We present a framework to design coset-coding based outer codes to secure a wide class of regenerating codes. Our framework leverages existing constructions of storage codes, and makes them secure with little additional overhead. We also consider a practically appealing notion of ‘weakly secure coding’, and construct universal coset codes that can weakly secure any systematic regenerating code that minimizes the storage cost. In the second half, we focus on locally repairable codes with availability, in which every code symbol can be recovered from multiple disjoint subsets of other symbols of small size. We derive tight upper bounds on the rate of binary linear codes with small availability, and establish a uniqueness result for ‘rate-optimal’ codes, showing that for certain classes of binary linear codes with small availability, any rate-optimal code must be a direct sum of shorter rate-optimal codes. Finally, we discuss several implications of analyzing codes with availability from a queuing theoretical perspective.